文件操作常用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 的文件
推荐文章: