go语言中对文件读写权限的检查,更改等功能的示例代码
简单的对文件读写权限的操作代码示例
用到的函数:
os.Stat(),os.OpenFile(),os.IsPermission()
建议:
1、最好在linux系统下操作测试比较直观
2、最好不要用root及超级用户测试
我用的beego框架测试的
添加测试路由:
beego.Router("/test/aaa", &controllers.TestController{}, "get:Aaa")
示例代码:
package controllers
import (
"fmt"
"os"
)
// TestController is a test control
type TestController struct {
//beego.Controller
BaseController
}
func (c *TestController) Aaa() {
c.Ctx.WriteString(`我是test控制器中的aaa方法`)
file := "logs/gblog.log"
info, _ := os.Stat(file)
qx := info.Mode()
//获取logs/gblog.log文件的权限
fmt.Println(file, "文件的权限是", qx)
//方法:
//使用os.OpenFile()函数并使用os.IsPermission()检查错误以查看文件是否有权限被拒绝错误。
//检查文件是否具有(读权限:os.O_RDONLY | 写权限:os.O_WRONLY)
f, err := os.OpenFile(file, os.O_RDONLY, 0666)
if err != nil {
if os.IsPermission(err) {
fmt.Println("没有(读取|写入)权限", f)
fmt.Println(err)
os.Exit(1)
}
}
f.Close()
//更改文件的读取、写入或执行权限
err := os.Chmod(file, 0777)
if err != nil {
fmt.Println(err)
}
}
截张图:
有兴趣的可以自行测试
相关文章