如何使java.io.File.list()与Windows资源管理器中的顺序相同

时间:2013-01-25 11:58:25

标签: java windows

如何在Windows资源管理器中获得java.io.File.list()相同的订单?

在我创建Temp文件夹的程序中,例如Temp1Temp2等等。但是,当我使用java.io.File.list()检索文件夹列表时,它会显示为Temp1Temp10等等。

请告诉我们如何获得与Windows资源管理器中显示的订单相同的订单?

由于

3 个答案:

答案 0 :(得分:7)

Windows资源管理器默认显示按名称排序的文件。查看File.list()的javadoc,

  

无法保证结果数组中的名称字符串将以任何特定顺序出现;特别是,它们不会保证按字母顺序出现。

因此,在使用File.list()获取文件列表后,您需要按文件名Arrays.sort(file.list())对其进行排序,以获得所需的订单。

答案 1 :(得分:0)

您需要编写自己的比较器。比较器需要拆分文件名字符串,将它们分成连续的非数字字符和数字字符的序列。然后对序列进行排序,在比较之前将数字字符序列转换为整数。此外,如果整数相等(由于前导零),则在较短的序列之前对较长的数字序列进行排序。

答案 2 :(得分:0)

这是一种称为自然排序的特定窗口排序算法的实现。

Java - Sort Strings like Windows Explorer

简而言之,它将两个字符串拆分为Letter - Digit Parts中的比较,并以特定的方式比较这些部分以实现这种排序。