文件操作常用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的文件

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~