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  【如果已经存在,则在尾部添加写】


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM