10

私はこれを行うことができます:

    File images = new File(path);  
    File[] imageList = images.listFiles(new FilenameFilter(){  
        public boolean accept(File dir, String name)  
        {  
            return name.endsWith(".jpg");
        }  
    });

stackoverflow の回答からコピーしました !

listFile ok kind "directory" (folder) と逆アルファベット順でリストする方法はありますか? ...そして逆日付で?

4

10 に答える 10

28
final File[] sortedFileName = images.listFiles()

if (sortedFileName != null && sortedFileName.length > 1) {
        Arrays.sort(sortedFileName, new Comparator<File>() {
             @Override
             public int compare(File object1, File object2) {
                return object1.getName().compareTo(object2.getName());
             }
    });
}

Array.sort()ファイルの名前を比較するために使用します。

編集: このコードを使用して日付で並べ替えます

final File[] sortedByDate = folder.listFiles();

if (sortedByDate != null && sortedByDate.length > 1) {
        Arrays.sort(sortedByDate, new Comparator<File>() {
             @Override
             public int compare(File object1, File object2) {
                return (int) ((object1.lastModified() > object2.lastModified()) ? object1.lastModified(): object2.lastModified());
             }
    });
}
于 2012-09-13T15:27:26.170 に答える
3

例外が発生していました

IllegalArgumentException: 比較メソッドが一般規約に違反しています!

だから私はこれを使用しましたが、うまくいきました:

Arrays.sort(filesList, new Comparator<File>() {
   @Override
   public int compare(File a, File b) {
      if(a.lastModified() < b.lastModified() )
         return 1;
      if(a.lastModified() > b.lastModified() )
         return -1;
      return 0;
}});
于 2018-01-26T20:16:30.793 に答える
2

ポインター:

File.isDirectory()

File.lastModified()
于 2012-09-13T15:22:41.287 に答える
1

簡潔にしたい場合:

File[] files = folder.listFiles();
Arrays.sort(files, (a, b) -> Long.compare(b.lastModified(), a.lastModified()));
于 2018-08-02T17:11:01.990 に答える
0

日付ごとに並べ替えたい場合は、以下のコードを選択します。名前が必要な場合は、既に答えが上にあります:)

File f = new File("/home/myfiles");
File [] files = f.listFiles();
Arrays.sort( files, new Comparator(){
public int compare(Object o1, Object o2) {

    if (((File)o1).lastModified() > ((File)o2).lastModified()) {
        return -1;
    } else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
        return +1;
    } else {
        return 0;
    }
}
}); 
于 2016-02-18T13:22:09.680 に答える
0

リバース モードで最終変更日によってファイルを並べ替える正しい方法は次のとおりです。

Arrays.sort(Files, LastModifiedFileComparator.LASTMODIFIED_REVERSE); 

この手順では、ここからダウンロードできる org.apache の commons.io ライブラリが必要です。

于 2016-04-04T11:36:04.363 に答える