0
1

More than 1 year has passed since last update.

Go言語でディレクトリを作成する方法

Last updated at Posted at 2022-07-10

はじめに

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言語難しいな。。。

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1