[解決済み】Javaでファイルを再帰的にリストする
2022-03-28 03:38:43
質問
Javaでディレクトリ以下の全ファイルを再帰的にリストアップするにはどうしたらいいですか?フレームワークは何かユーティリティを提供しますか?
ハック的な実装を多く見かけました。しかし、フレームワークからのものや ニオ
解決方法は?
Java 8は、ツリー内のすべてのファイルを処理するための素晴らしいストリームを提供します。
Files.walk(Paths.get(path))
.filter(Files::isRegularFile)
.forEach(System.out::println);
これは、ファイルをトラバースする自然な方法を提供します。これはストリームなので、結果に対してリミット、グループ化、マッピング、早期終了など、あらゆる素晴らしいストリーム操作が可能です。
アップデイト : また、次のようなものもあります。 ファイル.find これは BiPredicate の方が、ファイルの属性をチェックする必要がある場合、より効率的かもしれません。
Files.find(Paths.get(path),
Integer.MAX_VALUE,
(filePath, fileAttr) -> fileAttr.isRegularFile())
.forEach(System.out::println);
JavaDocでは、このメソッドが以下のメソッドよりも効率的であることを示唆しています。 ファイル.ウォーク というのは、事実上同じですが、フィルタの中でファイルの属性も取得している場合、パフォーマンスの違いが観察されるからです。結局のところ、属性でフィルタリングする必要がある場合は ファイル.find そうでない場合は ファイル.ウォーク というのも、オーバーロードがあり、より便利だからです。
テスト : ご要望にお応えして、多くの回答について性能比較を行いました。をチェックしてください。 Github プロジェクトには、結果とテストケースが含まれています。 .
関連
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] java.lang.ClassNotFoundException: クラス com.ibm.db2.jcc.DB2Driver が Worklight プラットフォームまたはプロジェクトに見つかりませんでした。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] Javaで配列をリストに変換する
-
[解決済み] CまたはC++を使用して、ディレクトリ内のファイルのリストを取得するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] Cloneable throws CloneNotSupportedException
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] 午前0時からの時間を秒単位で取得する方法
-
[解決済み] 文字列が一意な文字であるかどうかを判定する
-
[解決済み] javaでメソッドを呼び出すプログラムのエラー修正
-
[解決済み] 文字列の長さに応じて文字列をトリミングする
-
[解決済み] .lengthが解決できない、またはフィールドでない