Метод listFiles
с фильтром или без него не гарантирует какой-либо порядок.
Однако он возвращает массив, который можно отсортировать с помощью Arrays.sort()
.
File[] files = XMLDirectory.listFiles(filter_xml_files);
Arrays.sort(files);
for(File _xml_file : files) {
...
}
Это работает, потому что File
является сопоставимым классом, который по умолчанию сортирует имена путей лексикографически.Если вы хотите отсортировать их по-разному, вы можете определить свой собственный компаратор.
Если вы предпочитаете использовать Streams:
Более современный подход заключается в следующем.Чтобы напечатать имена всех файлов в данном каталоге в алфавитном порядке, выполните:
Files.list(Paths.get(dirName)).sorted().forEach(System.out::println)
Замените System.out::println
тем, что вы хотите сделать с именами файлов.Если вам нужны только имена файлов, оканчивающиеся на "xml"
, просто сделайте:
Files.list(Paths.get(dirName))
.filter(s -> s.toString().endsWith(".xml"))
.sorted()
.forEach(System.out::println)
Опять замените печать той обработкой, которая вам больше нравится.