大規模なディレクトリ内のファイルの効率的な一覧表示
膨大な数のファイルが含まれるディレクトリをプログラムでナビゲートすると、パフォーマンスの問題が発生する可能性があります。これらの制限を克服するには、Go の基礎となるディレクトリ読み取りメカニズムを理解することが不可欠です。
Readdirnames の回避
filepath.Walk を使用する従来のアプローチは、ioutil に依存しています。ファイルのスライスを返す ReadDir 関数と filepath.Glob 関数。ただし、これらの関数は、大きすぎるディレクトリを処理するときにメモリ制限に悩まされます。
バッファ配列を操作する ReadDirnames を使用する代わりに、低レベルの Readdir メソッドまたは Readdirnames メソッドを直接検討してください。これらのメソッドでは、0 より大きいバッチ サイズ (n) を指定でき、ディレクトリ エントリをバッチで取得できるようになります。
サンプル コード
次のコード スニペットReaddir:
<code class="go">package main import ( "fmt" "io/ioutil" "os" ) func main() { files, err := ioutil.ReadDir("directory_path") if err != nil { fmt.Println(err) return } for _, file := range files { fmt.Println(file.Name()) } }</code>
を使用してディレクトリ エントリを読み取る方法を示します。十分なバッチ サイズ (例: 10000) を指定すると、メモリの問題が発生することなく、大きなディレクトリ リストを効率的に処理できます。
以上が## Go で大きなディレクトリ内のファイルを効率的にリストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。