[解決済み] File.listFilesをアルファベット順に並べるには?
2022-11-26 22:32:56
質問
以下のようなコードがあります。
class ListPageXMLFiles implements FileFilter {
@Override
public boolean accept(File pathname) {
DebugLog.i("ListPageXMLFiles", "pathname is " + pathname);
String regex = ".*page_\\d{2}\\.xml";
if(pathname.getAbsolutePath().matches(regex)) {
return true;
}
return false;
}
}
public void loadPageTrees(String xml_dir_path) {
ListPageXMLFiles filter_xml_files = new ListPageXMLFiles();
File XMLDirectory = new File(xml_dir_path);
for(File _xml_file : XMLDirectory.listFiles(filter_xml_files)) {
loadPageTree(_xml_file);
}
}
は
FileFilter
はうまく動作していますが
listFiles()
は逆アルファベット順でファイルをリストアップしているようです。 何か手っ取り早い方法はないでしょうか?
listFile()
にアルファベット順のファイルをリストアップするための、何か簡単な方法はありますか?
どのように解決するのですか?
この
listFiles
メソッドは、フィルタの有無にかかわらず、いかなる順序も保証しません。
しかし、これは配列を返すので、それを
Arrays.sort()
.
File[] files = XMLDirectory.listFiles(filter_xml_files);
Arrays.sort(files);
for(File _xml_file : files) {
...
}
これは
File
は比較可能なクラスであり、デフォルトではパス名を辞書順にソートするからです。 もし別の方法でソートしたいのであれば、独自のコンパレータを定義することができます。
Streamsを使うのが好きなら
より現代的なアプローチとして、次のようなものがあります。与えられたディレクトリにあるすべてのファイルの名前をアルファベット順に表示するには、次のようにします。
Files.list(Paths.get(dirName)).sorted().forEach(System.out::println)
を置き換える
System.out::println
を、ファイル名として使いたいものに置き換えてください。もし、ファイル名の末尾を
"xml"
で終わるファイル名だけが必要なら、そうするだけです。
Files.list(Paths.get(dirName))
.filter(s -> s.toString().endsWith(".xml"))
.sorted()
.forEach(System.out::println)
ここでも、印刷を好きな処理に置き換えてください。
関連
-
FindBugの使用概要
-
代入の左辺は変数でなければならない 解答
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
プロジェクトの依存関係を解決できない。
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
無効なメソッド宣言
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
SocketException java.netの4つの例外解決策。
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
Java Runtime Environmentを継続するためのメモリが不足しています。
-
swagger2 モデルが表示されない モデルが見つからない @ApiModel アノテーションが表示されない問題
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。