1

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

在一个程序中,我正在创建Temp文件夹,例如Temp1Temp2等等。但是当我java.io.File.list()用来检索文件夹列表时,它会给出 as Temp1Temp10依此类推。

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

谢谢

4

3 回答 3

5

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

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

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

于 2013-01-25T12:05:38.530 回答
0

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

于 2015-09-10T01:54:22.163 回答
0

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

Java - 像 Windows 资源管理器一样对字符串进行排序

简而言之,它将两个字符串拆分为字母 - 数字部分进行比较,并以特定方式比较这些部分以实现这种排序。

于 2015-09-29T11:20:01.003 回答