我使用f.listFiles()在目录中创建了一个文件列表
不幸的是,他们的名字非常不同,如:
001.pdf
098.pdf
100.pdf
1000例.pdf
现在,目录中的文件数组在100.pdf之前设置了1000.pdf
我该如何对文件进行排序以使文件以正确的顺序返回?
感谢您的帮助!
答案 0 :(得分: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));
}
如果您使用的是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));
}
答案 1 :(得分:3)
如果您有一个字符串数组
,您可以编写自定义比较器public class StringComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
int n1 = Integer.parseInt(s1.substring(0, s1.indexOf(".") - 1));
int n2 = Integer.parseInt(s2.substring(0, s2.indexOf(".") - 1));
return n1 - n2;
}
}