【问题标题】:File permission mask in GoGo中的文件权限掩码
【发布时间】:2017-06-15 09:47:36
【问题描述】:

我最近在 Go 中使用文件模式和权限,并在获得它时偶然发现了输出。

以下代码:

for _, file := range files {
    fmt.Println(file.Mode()) 
}  

产生输出:

drwx------
Lrwxr-xr-x
drwxr--r--
drwx------
drwx------
prw-r--r--
Srw-rw-rw-
Srw-rw-rw-
-rw-r--r--

我的问题是如何获得 0777 等数字的权限。

这个答案中提供的python是否有类似的方法:How can I get a file's permission mask?

【问题讨论】:

    标签: go permissions


    【解决方案1】:

    一旦你有了文件模式(使用FileInfo.Mode()),使用FileMode.Perm() 方法。这将返回一个 os.FileMode 类型的值,它的基础类型为 uint32

    您正在寻找的格式(例如0777)以 8 为基数。您可以使用例如fmt.Printf() 和动词 %o 以八进制格式(以 8 为基数)打印一个数字。使用宽度 4 使其为 4 位数字,并使用标志 0 使其填充 0。所以打印文件权限的格式字符串:"%04o".

    所以这样打印:

    files, err := ioutil.ReadDir(".")
    // Handle err
    
    for _, file := range files {
        fmt.Printf("%s %04o %s\n", file.Mode(), file.Mode().Perm(), file.Name())
    }
    

    示例输出:

    -rw-rw-r-- 0664 play.go
    drwxrwxr-x 0775 subplay
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多