文件操作常用API
建立与打开文件
新建文件
新建文件可以通过如下方法:
func Create(name string) (file *File, err Error)
根据提供的文件名创建新的文件,返回一个文件对象,返回的文件对象是可读写的。
打开文件
通过如下两个方法来打开文件:
func Open(name string) (file *File, err Error)
Open()是以只读权限打开文件名为name的文件,得到的文件指针file,只能用来对文件进行“读”操作。如果我们有“写”文件的需求,就需要借助Openfile函数来打开了。
func OpenFile(name string, flag int, perm uint32) (file *File, err Error)
OpenFile()可以选择打开name文件的读写权限。这个函数有三个默认参数:
参1:name,表示打开文件的路径。可使用相对路径 或 绝对路径
参2:flg,表示读写模式,常见的模式有:
O_RDONLY(只读模式), O_WRONLY(只写模式), O_RDWR(可读可写模式)。
参3:perm,表示打开权限。来源于Linux系统调用中的open函数,参2为:O_CREATE时,可创建新文件。
权限取值范围(0-7),表示如下:
- 0:没有任何权限
- 1:执行权限(如果是可执行文件,是可以运行的)
- 2:写权限
- 3: 写权限与执行权限
- 4:读权限
- 5: 读权限与执行权限
- 6: 读权限与写权限
- 7: 读权限,写权限,执行权限
关闭文件函数:
func (f *File) Close() error
写文件
写入字符串到文件:
func (file *File) WriteString(s string) (ret int, err Error)
获取文件读写偏移量:
func (f *File) Seek(offset int64, whence int) (ret int64, err error)
参1: 偏移量。 正:向文件尾偏。 负:向文件头偏
参2: 偏移起始位置:
io.SeekStart: 文件起始位置
io.SeekCurrent: 文件当前位置
io.SeekEnd: 文件结尾位置
返回值:表示从文件起始位置,到当前文件读写指针位置的偏移量。
在指定位置写入数据:
func (file *File) WriteAt(b []byte, off int64) (n int, err Error)
参1:待写入的数据内容
参2:偏移量(通常是Seek函数返回值)
按字节写数据到文件:
func (file *File) Write(b []byte) (n int, err Error)
读文件
按行读文件:可以通过两步来实现。
首先,创建一个带有缓冲区的Reader,使用bufio包下的 NewReader() 函数来实现。
func NewReader(rd io.Reader) *Reader
然后,从Reader 自带的缓冲区中,按指定的“分隔符(delim)”获取数据。我们通常使用ReadBytes(‘\n’) 来有效的提取一行数据。
func (b *Reader) ReadBytes(delim byte) ([]byte, error)
读到的数据成功保存在返回的 []byte 中。可以循环按行读取整个文件。
按字节读文件:
func (file *File) Read(b []byte) (n int, err Error)
读取数据到b中
func (file *File) ReadAt(b []byte, off int64) (n int, err Error)
从off开始读取数据到b中
删除文件
func Remove(name string) Error
调用该函数就可以删除文件名为name的文件