👻

【Go】つぶやきos.Create()【エラー記録】

2021/09/27に公開

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