つぶやきテック

日々のつぶやきアウトプット

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