我最近在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??
答案 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