【发布时间】:2013-06-27 09:46:28
【问题描述】:
我有一个文件夹,其中包含以时间戳命名的文件。
当我尝试浏览每个文件时,它会按字母顺序对它们进行排序并给我这个顺序:
/home/user/buffereddata/1
/home/user/buffereddata/100
/home/user/buffereddata/1000
/home/user/buffereddata/200
/home/user/buffereddata/2000
/home/user/buffereddata/300
但我希望它们像这样排序:
/home/user/buffereddata/1
/home/user/buffereddata/100
/home/user/buffereddata/200
/home/user/buffereddata/300
/home/user/buffereddata/1000
/home/user/buffereddata/2000
这是我的代码:
File file = new File(System.getProperty("user.home") + "/buffereddata");
if(file.exists()) {
File[] fileArray = file.listFiles();
Arrays.sort(fileArray);
for(File f : fileArray) {
System.out.println(f);
}
}
是否有一些(最好是简单的)方法以我想要循环的方式循环文件?
【问题讨论】:
-
您可以将字符串解析为整数,然后将字符串和解析的整数放入两个相同索引的数组中,然后对整数数组进行排序,就像对字符串数组进行相同的交换一样。也许您需要自己编写排序方法。您也可以创建一个哈希表,一个 int 键和一个字符串。
-
你应该写一个
Comparator<File>,它基于文件名并按数字排序。 -
您可以创建一个比较器,参见 (mkyong.com/java/…) 并进行数字比较(或用零填充名称以确保它们具有相同的长度并进行字符串比较)
-
Sort on a string that may contain a number 的可能重复项(不完全是,但足够接近以至于解决方案类似。)
标签: java