Goでディレクトリを走査する方法
Goでは“filepath.Walk“関数でディレクトリのトラバーサルを行うことができます。“filepath.Walk“関数は指定されたディレクトリおよびそのサブディレクトリを再帰的にトラバースし、各ファイルまたはディレクトリに対して指定した関数を呼び出します。“filepath.Walk“関数を使用したディレクトリのトラバーサルと各ファイルのパスを出力する簡単な例を以下に示します。“`
package main
import (
“fmt”
“os”
“path/filepath”
)
func visit(path string, info os.FileInfo, err error) error {
if err != nil {
fmt.Printf(“ディレクトリのトラバーサル中にエラーが発生しました: %v\n”, err)
return err
}
if info.IsDir() {
fmt.Printf(“ディレクトリ: %s\n”, path)
} else {
fmt.Printf(“ファイル: %s\n”, path)
}
return nil
}
func main() {
root := “/path/to/folder” // トラバースするディレクトリのパスを指定
err := filepath.Walk(root, visit)
if err != nil {
fmt.Printf(“ディレクトリのトラバーサルに失敗しました: %v\n”, err)
}
}
“`
上記の例では、`visit`関数がトラバーサルの最中に各ファイルまたはディレクトリに対して呼び出す関数です。`visit`関数の引数には、現在のファイルまたはディレクトリのパス(`path`)、ファイルまたはディレクトリの情報(`info`)、および発生する可能性のあるエラー(`err`)が含まれます。`visit`関数内では、まずエラーが発生していないかどうかをチェックします。次に、現在のファイルまたはディレクトリがディレクトリかどうかをチェックします(これは`info.IsDir()`関数を使用して判断できます)。ディレクトリの場合は、ディレクトリのパスを出力します。ファイルの場合は、ファイルのパスを出力します。最後に、`main`関数では、トラバースするディレクトリのパスを指定し、`filepath.Walk`関数を呼び出してトラバーサルを実行します。トラバーサルの最中にエラーが発生した場合は、エラーメッセージを出力します。サンプルコード内の`/path/to/folder`をトラバースしたいディレクトリのパスに置き換えてください。