ホームページ >Java >&#&チュートリアル >Java はどのようにして効率的にファイルを再帰的に列挙できるのでしょうか?

Java はどのようにして効率的にファイルを再帰的に列挙できるのでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-19 17:11:10994ブラウズ

How Can Java Efficiently Recursively Enumerate Files?

Java を使用したファイルの再帰的列挙

指定されたディレクトリの下にあるファイルを再帰的に一覧表示するオプションを検討すると、さまざまなアプローチがわかります。 「巧妙な」実装は存在しますが、Java フレームワーク自体は、このタスクを効率化するための堅牢なユーティリティを提供します。

Java 8 の合理化されたアプローチ

Java 8 では、便利なストリームベースのソリューションが導入されています。 :

try (Stream<Path> stream = Files.walk(Paths.get(path))) {
    stream.filter(Files::isRegularFile)
          .forEach(System.out::println);
}

このアプローチは、ファイルをトラバースするエレガントな方法を提供し、さまざまなストリームをサポートしますフィルタリング、マッピング、制限などの操作。

Files.find: ファイル属性のフィルタリング

Java は、フィルタリングするための二重述語を受け入れる Files.find も提供します。属性に基づくファイル:

Files.find(Paths.get(path),
           Integer.MAX_VALUE,
           (filePath, fileAttr) -> fileAttr.isRegularFile())
        .forEach(System.out::println);

一方、Files.find は次の場合に特定の最適化を提供する場合があります。属性でフィルタリングする場合、そのパフォーマンスは一般に Files.walk と同等です。

パフォーマンスの比較

これらのアプローチを評価するときは、使用状況に基づいて特定のパフォーマンスへの影響を考慮することをお勧めします。シナリオ。さらに詳しい洞察については、回答の更新に含まれる GitHub プロジェクトを参照してください。このプロジェクトでは、結果とテスト ケースが提供されています。

以上がJava はどのようにして効率的にファイルを再帰的に列挙できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。