补讲: Go中除了0o/0O,前缀0也可以用来表示八进制数字
6.6.1 Unix文件操作权限码
权限针对不同操作者分别设置,三位八进制数字分别对应UGO
如775,为所有者和组成员有完整权限,普通访客只能读取与运行
6.6.2 相关类型
File
File是os包定义的一个结构体,表示一个打开的文件
FileInfo
FileInfo是io/fs包定义的一个接口,下面简称i
该接口要求实现Mode() FileMode,IsDir() bool等方法
FileMode
FileMode是io/fs包定义数据类型,底层为uint32,实现了FileInfo接口,下面简称m
Unix文件权限(ModePerm)数据类型也为FileMode,占用uint32后几位,下面简称perm
DirEntry
DirEntry是io/fs包定义的一个接口,该接口要求实现Name() string,IsDir() bool,Type() FileMode,Info() (FileInfo, err)方法
6.6.3 flag
flag数据类型为int,是指定文件操作模式的开关,以按位或进行组合
*必须指定O_RDONLY, O_WRONLY, O_RDWR中一个的flag
*可选的flag
6.6.4 文件/目录共用操作
*文件/目录(文件夹)的路径下面简称path
6.6.5 文件夹操作
6.6.6 文件操作
6.6.7 无缓冲区读写(适合一次性读写)
io.Reader/io.Writer
io.Reader/io.Writer是io包定义的接口(本文简称ior/iow)
io.Reader只要求实现Read(p []byte) (n int, err error)方法
io.Writer只要求实现Write(p []byte) (n int, err error)
*os.File实现了io.Reader/io.Writer接口
我们也可以根据需要,让自定义类型实现这些接口
6.7.1 通过缓冲区读写
bufio.Reader/bufio.Writer
bufio.Reader/bufio.Writer是bufio定义的结构体
为io.Reader/io.Writer实现缓冲
*bufio.Reader/bufio.Writer类型下面简称bufr/bufw
6.7.2 基于io.Reader/io.Writer的普通读写
6.7.4 复制