链接:https://www.jianshu.com/p/7790ca1bc8f6
來源:简书
最近在使用Golang进行文件读写的过程中,遇到几个细节问题导致程序写入数据时有一定脏数据的残留,最后发现是使用在进行文件操作的时候没有使用正确的造成的。因此专门去学习了下Golang中读写文件的几种方式方法。
读文件
使用golang语言去读取一个文件默认会有多种方式,这里主要介绍以下几种。
使用ioutil直接读取
需要引入包,该包默认拥有以下函数供用户调用。
读文件,我们可以看以下三个函数:
读取文件示例:
借助os.Open进行读取文件
由于是打开一个文件并返回一个文件对象,因此其实可以结合来进行读取。
其实是一个包含方法的接口类型,而文件对象本身是实现了了方法的。
我们先来看下家族的相关函数
使用家族函数和读取文件示例:
然而上述方式会比较繁琐一些,因为使用了的同时借助了,但是在读取大文件的时候还是比较有优势的。不过读取小文件可以直接使用文件对象的一些方法。
不论是上边说的还是他们最终都返回了一个文件对象,而该文件对象默认是有很多方法的,其中读取文件的方法有如下几种:
使用文件对象的方法读取:
使用os.Open和bufio.Reader读取文件内容
包实现了缓存IO,它本身包装了和对象,创建了另外的Reader和Writer对象,不过该种方式是带有缓存的,因此对于文本I/O来说,该包是提供了一些便利的。
先看下模块下的相关的函数方法:
示例:
读取文件全部示例
写文件
那么上述几种方式来读取文件的方式也支持文件的写入,相关的方法如下:
使用ioutil包进行文件写入
示例:
使用os.Open相关函数进行文件写入
因为系列的函数会打开文件,并返回一个文件对象指针,而该文件对象是一个定义的结构体,拥有一些相关写入的方法。
文件对象结构体以及相关写入文件的方法:
使用WriteString()j进行文件写入发现经常新内容写入时无法正常覆盖全部新内容。(是因为字符串长度不一样)
示例:
使用打开文件并进行文件内容更改,需要注意相关的参数以及含义。
使用io包中的相关函数写入文件
在包中有一个函数,用来将字符串写入一个对象中。
示例:
使用包中的相关函数写入文件
和包中很多操作都是相似的,唯一不同的地方是提供了一些缓冲的操作,如果对文件I/O操作比较频繁的,使用还是能增加一些性能的。
在包中,有一个结构体,而其相关的方法也支持一些写入操作。
示例:
写文件全部示例
Golang语言社区
游戏服务器架构丨分布式技术丨大数据丨游戏算法学习