我看到无数的例子和教程,显示如何创建一个文件和所有的“欺骗”,只需设置文件的权限位.我想知道/找出如何正确地实例化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被设置,虽然这可能有意义,但是我更喜欢正确的设置文件模式的方式.如上所述,一个常见的例子是UID / GID是已知的,并且已经作为int值提供,并且perms是先前收集并作为字符串插入到db中的八进制数字.
FileMode只是一个uint32.
http://golang.org/pkg/os/#FileMode
通过常量进行设置不是“欺骗”,您可以像其他数值一样使用它.如果您不使用常数,则可以对有效的数值使用转换:
mode := int(0777) os.FileMode(mode)