【发布时间】:2020-01-02 19:37:50
【问题描述】:
我有一个名为file001-file002...file099 的文件列表。我使用以下代码对它们进行排序,但我的文件仍列为file001-file010-file011...file002-file020...,而它们应按字母顺序排序为file001 file002 file003 file004 file005 ...file099。
如何解决这个问题?
File folder = new File("g:\");
File[] listOfFiles = folder.listFiles();
Arrays.sort(listOfFiles);
for (File file : listOfFiles) {
if (file.isFile()) {
//do sth
}
}
编辑
我希望根据文件名称的字母数字顺序对我的文件进行排序:
file001
file002
file003
file004
file005
...file099
【问题讨论】:
-
不是对文件进行排序,而是对文件名进行排序。
-
或者,为排序方法提供一个适当的比较器:
Arrays.sort(files, Comparator.comparing(File::getName));应该会产生预期的结果。 -
String的自然排序是按字典顺序排列的,您正在寻找自然排序,其中给定的String可能包含数字,并且您希望按字母顺序对字母排序,但在数字上按数字排序。 -
由于
new File("g:\")无法编译,我认为这不是您的实际代码。您描述的文件应该按照您的预期排序,假设它们都以f、i、l、e这四个字母开头,并以三个数字结尾。编辑您的问题并显示我们可以自己测试的实际代码。 (我怀疑您实际上没有名为file001的文件,而是file01——两位数,而不是三位。)
标签: java file sorting filenames