如何以字母顺序File.listFiles?

我有如下代码:

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()按字母顺序列出文件?

有或没有filter的listFiles方法不保证任何顺序。

但是,它会返回一个数组,您可以使用Arrays.sort()进行Arrays.sort()

 File[] files = XMLDirectory.listFiles(filter_xml_files); Arrays.sort(files); for(File _xml_file : files) { ... } 

这是可行的,因为File是一个可比较的类,它默认按照字典顺序排列path名。 如果你想对它们进行不同的sorting,你可以定义你自己的比较器。

我认为以前的答案是在这里做最好的方法是另一种简单的方法。 只是为了打印sorting的结果。

  String path="/tmp"; String[] dirListing = null; File dir = new File(path); dirListing = dir.list(); Arrays.sort(dirListing); System.out.println(Arrays.deepToString(dirListing));