转载 go 函数os.OpenFile_dodod2012的博客-CSDN博客_go os.openfile
go 系统函数os.OpenFile
定义为func OpenFile(name string, flag int, perm FileMode) (*File, error)
特简单,传入路径,flag,已经权限就打开了。
在使用中发现大家的调用方式常用
os.OpenFile("./app.log", os.O_CREATE|os.O_RDWR|os.O_APPEND, 0644)
这个0644是什么鬼?在go源码里枚举也没这些定义呀,猜测应该是某些权限的集合。
要是0777倒好理解了,因为unix就有个chmod +777
后来查了好多资料终于算是理解了。
0表示8进制。
644表示权限,要知道什么权限可以调用
aaa := os.FileMode(0777).String()
来获取,结果是-rwxrwxrwx
-表示普通文件
r表示可读
w表示可写
x表示可执行
然后各个位置表示对应的用户权限,可以参考下面这段东西
一般都文件属性标识如下:
-rwxrwxrwx
第1位:文件属性,一般常用的是"-",表示是普通文件;"d"表示是一个目录。
第2~4位:文件所有者的权限rwx (可读/可写/可执行)。
第5~7位:文件所属用户组的权限rwx (可读/可写/可执行)。
第8~10位:其他人的权限rwx (可读/可写/可执行)。
在golang中,可以使用os.FileMode(perm).String()来查看权限标识:
os.FileMode(0777).String() //返回 -rwxrwxrwx
os.FileMode(0666).String() //返回 -rw-rw-rw-
os.FileMode(0644).String() //返回 -rw-r--r--
0777表示:创建了一个普通文件,所有人拥有所有的读、写、执行权限
0666表示:创建了一个普通文件,所有人拥有对该文件的读、写权限,但是都不可执行
0644表示:创建了一个普通文件,文件所有者对该文件有读写权限,用户组和其他人只有读权限,
都没有执行权限