【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:49: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")
}

返信がありません

コメントを残す

メールアドレスが公開されることはありません。