как подать.список файлов в алфавитном порядке?
у меня есть код, как показано ниже:
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);
}
}
The FileFilter
работает хорошо, но listFiles()
Кажется, список файлов в обратном алфавитном порядке. Есть ли какой-то быстрый способ сказать listFile()
чтобы перечислить файлы в алфавитном порядке?
2 ответа:
The
listFiles
метод, с фильтром или без него, не гарантирует никакого порядка.он, однако, возвращает массив, который можно сортировать с помощью
Arrays.sort()
.File[] files = XMLDirectory.listFiles(filter_xml_files); Arrays.sort(files); for(File _xml_file : files) { ... }
это работает, потому что
File
- сопоставимый класс, который по умолчанию сортирует пути лексикографически. Если вы хотите отсортировать их по-разному, вы можете определить свой собственный компаратор.
Я думаю, что предыдущий ответ-это лучший способ сделать это здесь еще один простой способ. просто для печати отсортированных результатов.
String path="/tmp"; String[] dirListing = null; File dir = new File(path); dirListing = dir.list(); Arrays.sort(dirListing); System.out.println(Arrays.deepToString(dirListing));