我看到了无数的示例和教程,这些示例和教程显示了如何通过仅设置文件的权限位来创建文件,并且所有这些文件都“作弊”。我想知道/了解如何在创建/更新文件期间正确实例化os.FileMode以提供给编写者。
下面是一个简单的示例:
func FileWrite(path string, r io.Reader, uid, gid int, perms string) (int64, error){
w, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0664)
if err != nil {
if path == "" {
w = os.Stdout
} else {
return 0, err
}
}
defer w.Close()
size, err := io.Copy(w, r)
if err != nil {
return 0, err
}
return size, err
}
在上面的基本功能中,将权限位0664设置为1664,尽管有时这样做很有意义,但我还是希望采用正确的方式正确设置文件模式。如上所示,一个常见的示例是UID/GID是已知的,并且已经作为int值提供了,而perms是八进制数字,以前已将其收集并作为字符串插入到db中。
最佳答案
FileMode
只是一个uint32。 http://golang.org/pkg/os/#FileMode
通过常量设置不是“欺骗”,您可以像使用其他数值一样使用它。如果不使用常量,则可以对有效的数值进行转换:
mode := int(0777)
os.FileMode(mode)
关于go - 如何正确实例化os.FileMode,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28969455/