как подать.список файлов в алфавитном порядке?


у меня есть код, как показано ниже:

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 75

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));