讀寫文件要用到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)