0

私は java.io API を使用しています。以下のパターンの私のディレクトリにはたくさんのファイルがあります。

    FilenameFilter fileFilter = new FilenameFilter() {
        public boolean accept(File dir, String name) {

            return name.matches(filePrefix+"_.*\\."+fileExt);

        }
    };

    String listFiles [] = dirFile.list(fileFilter);
       for(int i = 0 ;i < listFiles.length ; i++){
        listOfFiles.add(listFiles[i]);
        // need only 10 files to processed
        if(i == 10){
            break;
        }
    }

listメソッドが何に基づいてリストを取得するかを知りたかったのです。たとえば、時間ベースの並べ替えが必要な場合-最も古い/または最新の10個のファイルが必要な場合です。

どうしよう。

解決 :

Arrays.sort(listFiles, new Comparator<File>() {

        @Override
        public int compare(File f1, File f2) {
            return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
        }
    });
4

2 に答える 2

1

上記はフィルターのみです。File.listFiles()オブジェクトのセットを返すメソッドを使用する方がよい場合がありFileます (上記のように、オプションのフィルターを指定できます)。これらのオブジェクトには、さらに並べ替えたい属性があります (おそらくカスタムComparator? を作成します)。こちらのドキュメントと並べ替えのチュートリアルをご覧ください

于 2013-10-21T11:30:59.087 に答える
1

'listFiles(fileFilter)'文字列の代わりにファイルオブジェクトをリストしてからsort/filterそれらをリストするために使用できます

于 2013-10-21T11:31:29.517 に答える