comment File.listFiles dans l’ordre alphabétique?

J’ai le code ci-dessous:

class ListPageXMLFiles implements FileFilter { @Override public boolean accept(File pathname) { DebugLog.i("ListPageXMLFiles", "pathname is " + pathname); Ssortingng regex = ".*page_\\d{2}\\.xml"; if(pathname.getAbsolutePath().matches(regex)) { return true; } return false; } } public void loadPageTrees(Ssortingng 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); } } 

Le FileFilter fonctionne bien, mais listFiles() semble lister les fichiers dans l’ordre alphabétique inverse. Existe-t-il un moyen rapide de dire à listFile() de répertorier les fichiers par ordre alphabétique?

La méthode listFiles , avec ou sans filtre, ne garantit aucun ordre.

Cependant, il retourne un tableau que vous pouvez sortinger avec Arrays.sort() .

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

Cela fonctionne car File est une classe comparable, qui sortinge par défaut les noms de chemin lexicographiquement. Si vous voulez les sortinger différemment, vous pouvez définir votre propre comparateur.

Je pense que la réponse précédente est la meilleure façon de le faire ici est une autre façon simple. juste pour imprimer les résultats sortingés.

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