[Java]ディレクトリ配下のファイル一覧をアルファベットの昇順/降順に並び替える

システム開発Tips

ラムダの例外処理のめんどくささよ。

JavaはStream APIが増えたので古き良き方法を使うか、最近のナウい方法を使うかで混乱しますね。

単純な処理や例外処理をきっちり書けるならStream APIを使うほうが良い気がしますが、

それほど作り込む必要のない(作り込めない)のであれば、旧来の方法を使うほうが良い気がします。

ディレクトリ配下のファイル一覧をアルファベットの昇順/降順に並び替える方法

で、今回の主題。

ディレクトリ配下のファイル一覧をアルファベットの昇順/降順に並び替える方法ですが、

Stack Over Flowに答えがありますが、うーんな感じなのでまとめ。

公式にも記載がある通り、listFilesメソッドは、フィルタの有無にかかわらず、順序を保証しません。また、取得時に並び順の指定もできません。

[File.html#listFiles](https://docs.oracle.com/javase/jp/7/api/java/io/File.html#listFiles())

ですが、listFilesの戻り値はFile[]なので、Arrays.sort()でソートできます。

中身を見たわけじゃありませんが、FileクラスのcompareToがgetNameかなんかで実装されてるかな。

なので、以下のような記述でアルファベットの昇順/降順に並び替えることできます。

File[] files = new File("ディレクトリパス").listFiles();
Arrays.sort(files); // 昇順 1.jpg, 2.jpg, 3.jpg
Arrays.sort(files, Collections.reverseOrder()); // 降順 3.jpg, 2.jpg, 1.jpg

フォローお願いします!

コメント

タイトルとURLをコピーしました