如何在java中使用不同的位数排序?

boo*_*tor 2 java sorting

我用f.listFiles()在目录中创建了一个文件列表.
不幸的是,它们的名称如下:
001.pdf
098.pdf
100.pdf
1000.pdf
现在,目录中的文件数组在100.pdf之前设置了1000.pdf.
如何对此进行排序以使文件以正确的顺序返回?

感谢帮助!

Tag*_*eev 6

您可以在空格前添加相同长度的名称:

File[] files = f.listFiles();
if(files != null) {
    Arrays.sort(files, new Comparator<File>() {
        @Override
        public int compare(File o1, File o2) {
            return String.format("%100s", o1.getName()).compareTo(
                   String.format("%100s", o2.getName()));
        }
    });
    System.out.println(Arrays.toString(files));
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Java-8,则更短:

File[] files = f.listFiles();
if(files != null) {
    Arrays.sort(files, Comparator.comparing(file -> String.format("%100s", file.getName())));
    System.out.println(Arrays.toString(files));
}
Run Code Online (Sandbox Code Playgroud)