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 回答