J'ai le code comme ci-dessous:
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);
}
}
Le FileFilter
fonctionne bien, mais listFiles()
semble répertorier les fichiers dans l'ordre alphabétique inverse. Existe-t-il un moyen rapide de listFile()
lister les fichiers par ordre alphabétique?
.endsWith(".xml")
place.Réponses:
La
listFiles
méthode, avec ou sans filtre, ne garantit aucun ordre.Il renvoie cependant un tableau avec lequel vous pouvez trier
Arrays.sort()
.Cela fonctionne parce que
File
c'est une classe comparable, qui par défaut trie les chemins lexicographiquement. Si vous souhaitez les trier différemment, vous pouvez définir votre propre comparateur.Si vous préférez utiliser Streams:
Une approche plus moderne est la suivante. Pour imprimer les noms de tous les fichiers d'un répertoire donné, par ordre alphabétique, procédez comme suit:
Remplacez le
System.out::println
par ce que vous voulez faire avec les noms de fichiers. Si vous ne voulez que des noms de fichiers qui se terminent par,"xml"
faites simplement:Encore une fois, remplacez l'impression par l'opération de traitement que vous souhaitez.
la source
sort
.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 triés.
la source
Dans Java 8:
Ordre inverse:
la source
Arrays.sort(fList, Comparator.comparing(File::getName));
Voici mon code:
la source