はじめに
Pythonメインだったのですが、興味があってGo言語の勉強をしています。
趣味で撮った写真を自動で振り分ける際にディレクトリの作成を調べたのでまとめておきます。
さらに詳しい操作については公式ドキュメントを参照しましょう。
2022/7/11 00:59追記
os.Mkdir("test", os.ModePerm)
と記載していましたが、os.ModePerm
は使用しないみたいです。調べてみてFileInfo.Mode() & os.ModePerm
を利用した方法に変更しましたが、間違っていたら教えていただえると嬉しいです!
ディレクトリを作成する方法
以下のコードをmain.go
に記載し、go run main.go
を実行すれば実行したディレクトリで/test
が作成されているはずです。
package main
import (
"log"
"os"
)
fileInfo, err := os.Lstat("./")
if err != nil {
fmt.Println(err)
}
fileMode := fileInfo.Mode()
unixPerms := fileMode & os.ModePerm
if err := os.Mkdir("test/", unixPerms); err != nil {
log.Fatal(err)
}
しかし、以下のコードは動きません。
package main
import (
"log"
"os"
)
fileInfo, err := os.Lstat("./")
if err != nil {
fmt.Println(err)
}
fileMode := fileInfo.Mode()
unixPerms := fileMode & os.ModePerm
if err := os.Mkdir("case/case01", unixPerms); err != nil {
log.Fatal(err)
}
% go run main.go
20XX/XX/XX XX:XX:XX mkdir case/case01: no such file or directory
exit status 1
サブディレクトリも含めて作成する方法
サブディレクトリを含めて作成する場合はMkdirAll()
を使用しましょう。
package main
import (
"log"
"os"
)
fileInfo, err := os.Lstat("./")
if err != nil {
fmt.Println(err)
}
fileMode := fileInfo.Mode()
unixPerms := fileMode & os.ModePerm
if err := os.MkdirAll("case/case01", unixPerms); err != nil {
log.Fatal(err)
}
上記のように記載すればサブディレクトリも含めて作成することが可能です。
さいごに
Go言語難しいな。。。