Go中的文件权限掩码

时间:2017-01-30 09:27:23

标签: go permissions

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

以下代码:

ReactiveList

产生输出:

 @Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {

    View view = convertView;
    ViewHolder viewHolder;
    if (view == null || !(view.getTag() instanceof ViewHolder)) {
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_single_line_spinner, null);
        viewHolder = new ViewHolder(view);
        view.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) view.getTag();
    }
    SubTest subTest  = getItem(position);
    if (subTest != null) {
        viewHolder.line1.setText(subTest.getTestname().trim());
    }
    return view;
}

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

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

1 个答案:

答案 0 :(得分:6)

拥有文件模式(使用FileInfo.Mode())后,请使用FileMode.Perm()方法。这将返回os.FileMode类型的值,该值为uint32作为其基础类型。

您正在寻找的格式(例如0777)位于基数8中。您可以使用以下格式: fmt.Printf()使用动词%o以八进制格式打印数字(基数为8)。使用宽度4将其设为4位数,使用标记0将其填充为0&#39}。所以打印文件权限的格式字符串:"%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