为了账号安全,请及时绑定邮箱和手机立即绑定

os.OpenFile 权限问题测试

os.OpenFile 权限问题测试

Go
犯罪嫌疑人X 2021-11-08 19:33:21
我目前在使用 os.OpenFile 时遇到问题。当我运行 go 测试时,它只是给了我“权限被拒绝”。type log struct {    Message   string    Source    string    Timestamp time.Time    ErrorCode ErrorCode}type ErrorCode intconst (    Info ErrorCode = 1 + iota    Warning    Error)func (errorCode ErrorCode) String() string {    switch errorCode {    case Info:            return "Info"    case Warning:            return "Warning"    case Error:            return "Error"    }    return "Type not found"}func writeToLog(logItem log) {    err := os.Chdir("..")    if err != nil {            fmt.Println("Can't change working directory")    }    err = os.Mkdir("logs", os.FileMode(0777))    if err != nil && os.IsNotExist(err) {            fmt.Println("Can't create log directory")    }    f, err := os.OpenFile("logs/log.txt",            os.O_WRONLY|os.O_CREATE|os.O_APPEND, os.FileMode(0666))    if err != nil {            fmt.Println("Can't find logfile")            fmt.Println(err)    }    defer f.Sync()    defer f.Close()    f.WriteString(logItem.ErrorCode.String() + logItem.Source +            logItem.Message + logItem.Timestamp.String())}输出:Can't find logfileopen logs/log.txt: permission deniedCan't find logfileopen logs/log.txt: permission denied我做错了什么?似乎 OpenFile 没有正确设置我的权限(-rw-r--r--)。
查看完整描述

1 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

所以我能够解决这个问题。

os.Chdir("..")

被一遍又一遍地召唤。显然,当前工作目录已存储,并且在 func 完成后不会变回原来的状态。

删除后,一切正常。我刚添加的../os.Mkdiros.OpenFile

我正在寻找使用环境变量来使这项工作更好我认为。


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信