Golang正确实例化os.FileMode

前端之家收集整理的这篇文章主要介绍了Golang正确实例化os.FileMode前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我看到无数的例子和教程,显示如何创建一个文件和所有的“欺骗”,只需设置文件的权限位.我想知道/找出如何正确地实例化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)

猜你在找的Go相关文章