こんにちは、kurumi-bioです。
第8回目のosパッケージ(標準ライブラリー)の学習です。
環境
- Windows
OSバージョン:Windows11 Home 22H2
Go言語のバージョン:go version go1.20 windows/amd64 - Linux
OSバージョン:openSUSE Leap 15.4
Go言語のバージョン:go version go1.20.1 linux/amd64
Mkdir関数
func Mkdir(name string, perm FileMode) error
◆テストコード
package main import ( "fmt" "os" ) func main() { e := os.Mkdir("MkdirTest", 0750) if e != nil { fmt.Fprintf(os.Stderr, "Error: %v \n", e) os.Exit(1) } }
カレントディレクトリに名前が"MkdirTest"でパーミッションが0750(rwxr-x---)のフォルダを作成するプログラムです。
◆実行結果
"MkdirTest"フォルダが作成されました。
◆実行結果2
"MkdirTest"フォルダが存在するときに実行すると"フォルダ名: file exists"というエラーが発生します。
MkdirAll関数
func MkdirAll(path string, perm FileMode) error
◆テストコード
package main import ( "fmt" "os" ) func main() { e := os.MkdirAll("MkdirAll/MkdirSub", 0750) if e != nil { fmt.Printf("err=%v\n", e) } }
カレントディレクトリに名前が"MkdirAll"でパーミッションが0750(rwxr-x---)のフォルダと、その直下に名前が"MkdirSub"でパーミッションが0750(rwxr-x---)のフォルダを作成するプログラムです。
◆実行結果
"MkdirAll"フォルダと、その直下に"MkdirSub"フォルダが作成されました。
◆実行結果2
既に同名のフォルダが存在する状態で再度実行しましたがos.Mkdir
と異なりエラーになりませんでした。
**広告の下に続きます。**
MkdirTemp関数
func MkdirTemp(dir, pattern string) (string, error)
◆テストコード
package main import ( "fmt" "os" ) func main() { d, e := os.MkdirTemp("", "temp") if e != nil { fmt.Fprintf(os.Stderr, "Error: %v \n", e) os.Exit(1) } else { fmt.Printf("Path=[%s]\n", d) } d, e = os.MkdirTemp("", "te*mp") if e != nil { fmt.Fprintf(os.Stderr, "Error: %v \n", e) os.Exit(1) } else { fmt.Printf("Path=[%s]\n", d) } }
一時ファイルの既定のディレクトリに"temp+ランダムな文字列"フォルダと"te+ランダムな文字列+mp"フォルダを作成するプログラムです。
◆実行結果(Windows)
Windowsの実行結果です。環境変数TEMPに指定しているパスの直下に一時ディレクトリが作成されました。
◆実行結果(Linux)
Linuxの実行結果です。環境変数にTEMPが無いので、一時ファイルの規定のディレクトリは、/tmpで固定だと思われます。ランダムな文字列は、毎回違う値になります。
**最後までご覧いただきありがとうございます**