go语言ioutil包 go 语言 gui

golang ioutil.WriteFile函数perm参数的用法

golang ioutil.WriteFile函数perm参数的用法

浦东网站建设公司成都创新互联公司,浦东网站设计制作,有大型网站制作公司丰富经验。已为浦东上1000+提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的浦东做网站的公司定做!

ioutil.WriteFile(..., perm os.FileMode)

刚开始接触golang的文件API的时候,总是纳闷为什么在创建文件的时候需要显示的指定文件的perm属性,难道不能从系统的umask里面获取吗?

实际上ioutil.WriteFile在创建新文件时,并不是直接使用参数perm的值,而是要和umask的值做合并的。把函数参数的值合并到当前umask的值,才是最终创建出来文件的perm属性。

例如

umask为空,所以ioutil.WriteFile的perm属性就是最后的文件属性

umask为0777,所以ioutil.WriteFile的perm属性全被disable掉了

umask为0000,所以ioutil.WriteFile的perm属性就是最后的文件属性

umask为0640,而ioutil.WriteFile的perm属性也是640,正好全部被关闭了,最后生成的文件没有任何属性。

即ioutil.WriteFile在写文件时,如果目标文件已经存在,那么目标文件的perm属性不会被改动,即此时ioutil.WriteFile的参数perm会被忽略。

注意一点就明白了,touch命令使用的是0666的属性,它并没有给X(executable)属性置值,所以不管在umask中对executable位是否置1,touch命令就不能生成一个具有executable的文件。

Go 读取大文件

测试文件使用的文件大小为 1.35GB 的日志文本文件,使用下面两种方式来读取。

Go 标准库中包含了读写的缓冲库,直接使用即可:

输出结果为:

Go 标准库中包括了 io 读写的相关工具包,直接开箱即用:

输出结果为:

结果对比

测试发现, ioutil.ReadFile 比 bufio 读写还要快。

Go语言文件操作

本文主要介绍了Go语言中文件读写的相关操作。

文件是什么?

计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。

os.Open() 函数能够打开一个文件,返回一个 *File 和一个 err 。对得到的文件实例调用 close() 方法能够关闭文件。

为了防止文件忘记关闭,我们通常使用defer注册文件关闭语句。

Read方法定义如下:

它接收一个字节切片,返回读取的字节数和可能的具体错误,读到文件末尾时会返回 0 和 io.EOF 。 举个例子:

使用for循环读取文件中的所有数据。

bufio是在file的基础上封装了一层API,支持更多的功能。

io/ioutil 包的 ReadFile 方法能够读取完整的文件,只需要将文件名作为参数传入。

os.OpenFile() 函数能够以指定模式打开文件,从而实现文件写入相关功能。

其中:

name :要打开的文件名 flag :打开文件的模式。 模式有以下几种:

perm :文件权限,一个八进制数。r(读)04,w(写)02,x(执行)01。


本文标题:go语言ioutil包 go 语言 gui
本文URL:http://myzitong.com/article/ddcggpj.html