👻
【Go】つぶやきos.Create()【エラー記録】
os.Create() でpermission errorに遭遇
os.Create()でファイル作成するコードで出会ったパーミッションエラーに関するメモです。
- エラー起きたコード
package main
import (
"log"
"os"
)
func main() {
fp, err := os.Create("hoge.txt")
if err != nil {
log.Println("[os.Create]:", err)
}
defer fp.Close()
fp.WriteString("hogehoge")
}
- 実行結果
$ go run main.go
2021/09/27 17:27:23 [os.Create]: open hoge.txt: permission denied
ファイルのパーミッションエラーかな?と思ったものの、よくよく調べるとディレクトリのパーミッションが原因のようでした。
-
参考
-
修正後コード
package main
import (
"log"
"os"
)
func main() {
/*
os.Createでのエラー回避のため
カレントディレクトリのパーミッション変更
refs: https://stackoverflow.com/questions/58403134/go-permission-denied-when-trying-to-create-a-file-in-a-newly-created-directory
*/
workDir, _ := os.Getwd()
os.Chmod(workDir, 0777)
fp, err := os.Create("hoge.txt")
if err != nil {
log.Println("[os.Create]", err)
}
defer fp.Close()
fp.WriteString("hogehoge")
}
Discussion