补讲: 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 复制