golang文件讀寫

讀寫文件要用到os包中的

func OpenFile(name string, flag int, perm FileMode) (*File, error) 

該方法第一個參數爲文件路徑,第二個參數控制文件的打開方式,第三個參數控制文件模式

可用的打開方式有

const (
    //只讀模式
    O_RDONLY    int    = syscall.O_RDONLY    // open the file read-only.
    //只寫模式
    O_WRONLY    int    = syscall.O_WRONLY    // open the file write-only.
    //可讀可寫
    O_RDWR        int    = syscall.O_RDWR    // open the file read-write.
    //追加內容
    O_APPEND    int    = syscall.O_APPEND    // append data to the file when writing.
    //創建文件,如果文件不存在
    O_CREATE    int    = syscall.O_CREAT    // create a new file if none exists.
    //與創建文件一同使用,文件必須存在
    O_EXCL        int    = syscall.O_EXCL    // used with O_CREATE, file must not exist
    //打開一個同步的文件流
    O_SYNC        int    = syscall.O_SYNC    // open for synchronous I/O.
    //如果可能,打開時縮短文件
    O_TRUNC        int    = syscall.O_TRUNC    // if possible, truncate file when opened.
)

打開模式

const (
    // The single letters are the abbreviations
    // used by the String method's formatting.
    ModeDir        FileMode    = 1 << (32 - 1 - iota)    // d: is a directory 文件夾模式
    ModeAppend                        // a: append-only 追加模式
    ModeExclusive                        // l: exclusive use 單獨使用
    ModeTemporary                        // T: temporary file (not backed up) 臨時文件
    ModeSymlink                        // L: symbolic link 象徵性的關聯
    ModeDevice                        // D: device file 設備文件
    ModeNamedPipe                        // p: named pipe (FIFO) 命名管道
    ModeSocket                        // S: Unix domain socket  Unix 主機 socket
    ModeSetuid                        // u: setuid 設置uid
    ModeSetgid                        // g: setgid 設置gid
    ModeCharDevice                        // c: Unix character device, when ModeDevice is set Unix 字符設備,當設備模式是設置Unix
    ModeSticky                        // t: sticky 粘性的
    // Mask for the type bits. For regular files, none will be set. bit位遮蓋.不變的文件設置爲none
    ModeType    = ModeDir | ModeSymlink | ModeNamedPipe | ModeSocket | ModeDevice
    ModePerm    FileMode    = 0777    // Unix permission bits 權限位.
)

創建一個文件並追加內容

package main

import (
    "os"
)
func main() {
    fname := "/home/stack/tmp/t.txt"
    f, err := os.OpenFile(fname, os.O_CREATE|os.O_RDWR|os.O_APPEND, os.ModeAppend|os.ModePerm)
    if err != nil {
        fmt.Println(err)
    }
    f.WriteString("test")
    f.Close()
}

刪除文件

    os.Remove(fname)

創建目錄

    dname := "/home/stack/tmp/d"
    os.Mkdir(dname, os.ModeDir|os.ModePerm)

創建完整目錄路徑,即中間目錄不存在的話也一起創建

    os.MkdirAll(dname,os.ModeDir|os.ModePerm)

刪除目錄與刪除文件相同.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章