基本介绍
os.File
封装所有的文件相关操作,File是一个结构体。File代表一个打开文件的对象。
文件基本操作
打开/关闭文件
os.Open
1 | // 打开文件 |
Open
返回的是File结构体指针
os.OpenFile
1 | func OpenFile(name string, flag int, perm FileMode) (file *File, err error) |
OpenFile
是一个更一般性的文件打开函数,大多数调用者都应用Open或Create代替本函数。它会使用指定的选项(如O_RDONLY等)、指定的模式(如0666等)打开指定名称的文件。如果操作成功,返回的文件对象可用于I/O。如果出错,错误底层类型是*PathError
flag
参数是文件打开模式
1 | const ( |
FileMode
代表文件打开的权限,r-w-x
,只在Linux下有效
读文件
带缓冲的写入bufio.Reader
bufio.Reader
是一个结构体,实现了给一个io.Reader
接口对象附加缓冲。默认缓冲区大小位4096B
1 | package main |
一次性读取文件ioutil.ReadFile
1 | func ReadFile(filename string) ([]byte, error) |
使用ioutil.ReadFile
函数,ReadFile
从filename指定的文件中读取数据并返回文件的内容。成功的调用返回的err为nil而非EOF。因为本函数定义为读取整个文件,它不会将读取返回的EOF视为应报告的错误。
1 | package main |
写文件
带缓冲的写入bufio.Writer
bufio.Writer
是一个结构体,Writer实现了为io.Writer
接口对象提供缓冲。如果在向一个Writer
类型值写入时遇到了错误,该对象将不再接受任何数据,且所有写操作都会返回该错误。在说有数据都写入后,调用者有义务调用Flush
方法以保证所有的数据都交给了下层的io.Writer
。
1 | package main |
一次性写入文件ioutil.WriteFile
1 | func WriteFile(filename string, data []byte, perm os.FileMode) error |
函数向filename指定的文件中写入数据。如果文件不存在将按给出的权限创建文件,否则在写入数据之前清空文件。
判断文件/目录是否存在os.Stat
1 | func Stat(name string) (fi FileInfo, err error) |
Stat返回一个描述name指定的文件对象的FileInfo
。如果指定的文件对象是一个符号链接,返回的FileInfo
描述该符号链接指向的文件的信息,本函数会尝试跳转该链接。如果出错,返回的错误值为*PathError
类型。
1 | type FileInfo interface { |
FileInfo
用来描述一个文件对象。
文件拷贝io.Copy
1 | func Copy(dst Writer, src Reader) (written int64, err error) |
将src的数据拷贝到dst,直到在src上到达EOF或发生错误。返回拷贝的字节数和遇到的第一个错误。
对成功的调用,返回值err为nil而非EOF,因为Copy定义为从src读取直到EOF,它不会将读取到EOF视为应报告的错误。如果src实现了WriterTo接口,本函数会调用src.WriteTo(dst)进行拷贝;否则如果dst实现了ReaderFrom接口,本函数会调用dst.ReadFrom(src)进行拷贝。