osパッケージ
ファイルのステータスの確認
os.Stat関数を呼び出すと色々取れる。
import (
"errors"
"fmt"
"os"
)
func main() {
info, err := os.Stat("test1.txt")
if err != nil {
if errors.Is(err, os.ErrNotExist) {
fmt.Println("ファイルなし")
} else if err != nil {
fmt.Printf("os.Stat()でエラー発生: %v\n", err)
}
return
}
fmt.Println("ファイルあり")
fmt.Printf("ファイルサイズ: %v\n", info.Size())
fmt.Printf("モード: %v\n", info.Mode())
fmt.Printf("更新日時: %v\n", info.ModTime())
if info.IsDir() {
fmt.Println("ディレクトリだ")
} else if info.Mode().IsRegular() {
fmt.Println("通常ファイルだ")
} else {
fmt.Println("それ以外?")
}
}
ディレクトリを作成する
os.MkdirAll関数を利用するとディレクトリが作成できる。
パーミッションはx(実行権限)を付けないとlsで表示できなくなるので注意。
import (
"fmt"
"os"
)
func main() {
if err := os.MkdirAll("data", 0775); err != nil {
fmt.Printf("ディレクトリ作成失敗: %v\n", err)
return
}
fmt.Println("ディレクトリ作成成功")
}
ディレクトリを丸ごと削除する
os.RemoveAllでディレクトリを丸ごと削除できる。
ファイルが存在しない場合、nilが戻ってくるので用途によっては注意。
package main
import (
"fmt"
"os"
)
func main() {
targetDir := "mydir"
// RemoveAllの戻り値は対象が存在しない場合はnilを返すので
// 必要なら事前にチェックする
if _, err := os.Stat(targetDir); os.IsNotExist(err) {
fmt.Fprintf(os.Stderr, "Error: not found directory %q\n", targetDir)
return
}
err := os.RemoveAll(targetDir)
if err != nil {
fmt.Fprintf(os.Stderr, "Error: failed to remove directory: %v\n", err)
} else {
fmt.Printf("Successfully remove the directory %q.\n", targetDir)
}
}
リネームする
import (
"fmt"
"os"
)
func main() {
if err := os.Rename("data", "data-new"); err != nil {
fmt.Printf("リネーム失敗: %v\n", err)
return
}
fmt.Println("リネーム成功")
}