※Go言語入門のindexページはこちら
こんにちは。オガリア開発チームの粂です。
最近、Goの勉強を始めています。
とりあえずちょっと便利なコマンドラインユーティリティーが書けるレベルを目指しているので、
そういったユーティリティーを書くときに必要なスニペット的なものをまとめていこうと思います。
このシリーズ、しばらく続く予定です。
Goのバージョン:1.1.2
まずはファイル・ディレレクトリ周りの操作方法から。
ディレクトリの作成
package main import ( "fmt" "os" ) func main() { if err := os.Mkdir("hoge", 0777); err != nil { fmt.Println(err) } }
ディレクトリの作成(サブディレクトリも作成する)
サブディレクトリも作成したい場合はMkdirAllを使う。
package main import ( "fmt" "os" ) func main() { if err := os.MkdirAll("hoge/fuga", 0777); err != nil { fmt.Println(err) } }
ディレクトリの名前変更
package main import ( "fmt" "os" ) func main() { if err := os.Rename("hoge", "fuga"); err != nil { fmt.Println(err) } }
ディレクトリの移動
移動もRenameを使う。
package main import ( "fmt" "os" ) func main() { if err := os.Rename("hoge/fuga/piyo", "hoge/piyo"); err != nil { fmt.Println(err) } }
ディレクトリの権限変更
package main import ( "fmt" "os" ) func main() { if err := os.Chmod("hoge", 0775); err != nil { fmt.Println(err) } }
ディレクトリの削除
package main import ( "fmt" "os" ) func main() { if err := os.Remove("hoge"); err != nil { fmt.Println(err) } }
ディレクトリの削除(中のファイルやディレクトリもまとめて)
package main import ( "fmt" "os" ) func main() { if err := os.RemoveAll("hoge"); err != nil { fmt.Println(err) } }
ファイルの存在確認
package main import ( "fmt" "os" ) func main() { _, err := os.Stat("hoge.txt") if err == nil { fmt.Println(err) } }
ファイルの名前変更
package main import ( "fmt" "os" ) func main() { if err := os.Rename("hoge.txt", "fuga.txt"); err != nil { fmt.Println(err) } }
ファイルの移動
移動もRenameを使う。
package main import ( "fmt" "os" ) func main() { if err := os.Rename("hoge/fuga/piyo.txt", "hoge/piyo.txt"); err != nil { fmt.Println(err) } }
ファイルの権限変更
package main import ( "fmt" "os" ) func main() { if err := os.Chmod("fuga.txt", 0664); err != nil { fmt.Println(err) } }
ファイルの削除
package main import ( "fmt" "os" ) func main() { if err := os.Remove("fuga.txt"); err != nil { fmt.Println(err) } }
ディレクトリ・ファイルを操作する関数はosパッケージに集められています。
http://golang.org/pkg/os/
比較的よく使う関数をまとめてみました。
次回以降ではさらにファイル・ディレクトリ操作や、正規表現あたりをまとめていこうと思います。
最後までお読みいただきありがとうございました!
「ファイルの削除」欄の9行目ですが、os.Remove(“fuga.txt”) の誤りだと思われます。ご確認下さい。
ご指摘ありがとうございます!おっしゃるとおりです。本文修正しました。
コメントありがとうございました。