我最近玩Go中的文件模式和权限,并在获取它时偶然发现了输出.
以下代码:
for _, file := range files {
fmt.Println(file.Mode())
}
Run Code Online (Sandbox Code Playgroud)
产生输出:
drwx------
Lrwxr-xr-x
drwxr--r--
drwx------
drwx------
prw-r--r--
Srw-rw-rw-
Srw-rw-rw-
-rw-r--r--
Run Code Online (Sandbox Code Playgroud)
我的问题是如何获得0777等数字的权限.
有没有像在这个答案中提供的python类似的方式:我如何获得文件的权限掩码??
获得文件模式(使用FileInfo.Mode())后,请使用该FileMode.Perm()方法.这将返回一个类型的值,os.FileMode该值具有uint32其基础类型.
您正在寻找的格式(例如0777)位于基数8.您可以使用例如fmt.Printf()动词%o以八进制格式打印数字(基数为8).使用宽度4使其成为4位数,并使用一个标志0使其用0's 填充.所以打印文件权限的格式字符串:"%04o".
所以打印出来像这样:
files, err := ioutil.ReadDir(".")
// Handle err
for _, file := range files {
fmt.Printf("%s %04o %s\n", file.Mode(), file.Mode().Perm(), file.Name())
}
Run Code Online (Sandbox Code Playgroud)
示例输出:
-rw-rw-r-- 0664 play.go
drwxrwxr-x 0775 subplay
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |