计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件(以ASCII码存储的文件)和二进制文件(包含其他数据的文件),文本文件后缀通常是.txt,二进制文件有.bat,.bin,.exe等等
.什么是io,在计算机中指的是input/output,由于程序运行时数据是在内存中驻留的,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘,网络等。就需要IO接口
在Go中,输入输出操作是通过能读能写的字节流数据模型来实现的,为此,io包提供了io.Reader和io.Writer来进行输入输出操作,如下图

我们看到的io接口是这样的
无论是什么包的Reader接口中都会有一个read方法,我们看无论什么包里的read方法,会发现传参是[]byte类型,之后read方法会流式读取文件中的数据,如果文件够大时 看,每个读取的字符个数就是我们的切片容量。
栗子:
write将len个字符从切片写到基本数据流中
bufio包实现了缓存io,它包装了io.Reader和io.Writer对象,创建了另外的Reader和Writer对象,他们也实现 了io.Reader接口,不过是有缓存的。
该类型表示本地系统上的文件,它实现了io.Reader和io.Writer,因此可以在任何流IO上下文中使用,
其中os.File,即文件类型中蕴含的fileperm表示了文件权限
如:
0777 //-rwxrwxrwx 所有人都可读、写、执行
0666 //-rw-rw-rw 所有人都可读,写,但不可执行
0644 //-rw-r-r 所有者有读写权限,用户组和其他人只能够读
下面是一个将字符串切片写入文件中的栗子
Standard output input and error ,os包中公开三个变量,os.Stdout,os.Stdin,os.Stderr,他们的类型为os* *file,分别表示操作系统标准输出\输入和错误的文件句柄
下面是一个将字符串直接打印到标准输出的栗子
os.OpenFile()函数能够以指定模式打开文件,从而实现文件写入相关功能
其中:
name:要打开的文件名 flag:打开文件的模式 perm:文件权限
os.O_WRONLY
只写
os.O_CREATE
创建文件
os.O_RDONLY
只读
os.O_RDWR
读写
os.O_TRUNC
清空
os.O_APPEND
追加
追加模式:只能写不能读,写一个已经存在的文件,会在文件的后面写内容,追加一个不存在的文件,会先清空文件内容再写
清空模式:一个文件如果存在,且为只读或者只写成功打开,就将其长度截短为0
perm:文件权限,一个八进制数。r(读)04,w(写)02,x(执行)01
bufio.NewWriter