ホームページ > バックエンド開発 > Golang > ## Go で大きなディレクトリ内のファイルを効率的にリストするにはどうすればよいですか?

## Go で大きなディレクトリ内のファイルを効率的にリストするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-24 19:17:02
オリジナル
321 人が閲覧しました

## How to Efficiently List Files in Large Directories with Go?

大規模なディレクトリ内のファイルの効率的な一覧表示

膨大な数のファイルが含まれるディレクトリをプログラムでナビゲートすると、パフォーマンスの問題が発生する可能性があります。これらの制限を克服するには、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート