zoukankan      html  css  js  c++  java
  • 文件权限处理

    在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
    
  • 相关阅读:
    验证 Email
    取系统时间
    DbHelperSQL.cs
    显示BYTE流图片
    [原]c# 读取文本文件(txt)
    数据库文件组和文件的作用
    Transact—SQL
    m_pMainWnd
    sql server 2005 window 身份证验证模式与SQL Server身份验证
    WM_CLOSE WM_DESTROY WM_QUIT
  • 原文地址:https://www.cnblogs.com/cizao/p/11481957.html
Copyright © 2011-2022 走看看