首页 > 其他 > 详细

文件权限处理

时间:2019-09-07 18:20:26      阅读:64      评论:0      收藏:0      [点我收藏+]

在go中,使用os.Chmod(filename,filemod)需要传入的是要变更权限的文件名和要变更的权限,
也就类似于linux中的chmod

一开始我以为的是只要在后面权限参数上写上二进制的权限制就行,后来发现是不行的,需要进行转换
得益于https://www.jianshu.com/p/216cb89c4d81

得知:777通过转换并不能成为 -rwxrwxrwx,
这是因为外部传入的是十进制777

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println(os.FileMode(777), 777)
    fmt.Println(os.FileMode(0777), 0777)
}

输出结果:
-r----x--x 777
-rwxrwxrwx 511

正确使用os.FileMode()时,应该先将777 先看成八进制,然后转成十进制值,传入os.FileMode中,转换方法如下

mode := 777
um, _ := strconv.ParseInt(strconv.Itoa(mode), 8, 0)

// 完整测试代码
package main

import (
    "fmt"
    "os"
    "strconv"
)

func main() {
    um, _ := strconv.ParseInt(strconv.Itoa(777), 8, 0)
    fmt.Println(os.FileMode(777), 777)
    fmt.Println(os.FileMode(0777), 0777)
    fmt.Println(os.FileMode(um), um)
}

输出:
-r----x--x 777
-rwxrwxrwx 511
-rwxrwxrwx 511

使用filemod

接受外部传入的参数mod
    perm, _ := strconv.ParseInt(mod, 8, 0)
    per := os.FileMode(perm)
    err2 := os.Chmod(dest, per)
    if err2 == nil {
        return

文件权限处理

原文:https://www.cnblogs.com/0916m/p/11481957.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!