golang os.OpenFile
golang文件读写
func OpenFile(name string, flag int, perm FileMode) (*File, error)
第一个参数为文件路径,第二个参数控制文件的打开方式,第三个参数控制文件模式
打开方式
const ( // Exactly one of O_RDONLY, O_WRONLY, or O_RDWR must be specified. // 只读模式 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. // The remaining values may be or'ed in to control behavior. // 追加内容 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 // truncate regular writable 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; Plan 9 only // 象征性的关联 ModeSymlink // L: symbolic link // 设备文件 ModeDevice // D: device file // 命名管道 ModeNamedPipe // p: named pipe (FIFO) // Unix 主机 socket ModeSocket // S: Unix domain socket // 设置uid ModeSetuid // u: setuid // 设置gid ModeSetgid // g: setgid // UNIX 字符串设备,当设备模式是设置unix ModeCharDevice // c: Unix character device, when ModeDevice is set // 粘性的 ModeSticky // t: sticky // 非常规文件;对该文件一无所知 ModeIrregular // ?: non-regular file; nothing else is known about this file // bit位遮盖,不变的文件设置为none // Mask for the type bits. For regular files, none will be set. ModeType = ModeDir | ModeSymlink | ModeNamedPipe | ModeSocket | ModeDevice | ModeCharDevice | ModeIrregular // 权限位 ModePerm FileMode = 0777 // Unix permission bits )
OpenFile几种常用模式
os.O_WRONLY | os.O_CREATE | O_EXCL 【如果已经存在,则失败】
os.O_WRONLY | os.O_CREATE 【如果已经存在,会覆盖写】
os.O_WRONLY | os.O_CREATE | os.O_APPEND 【如果已经存在,则在尾部添加写】