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

如何获取java.io.File.list()与Windows资源pipe理器中的顺序相同?

在一个程序中,我正在创buildTemp文件夹,例如Temp1Temp2等等。 但是当我使用java.io.File.list()来检索文件夹列表时,它给出了Temp1Temp10等等。

请告诉如何获得与在Windows资源pipe理器中显示的订单相同的清单?

谢谢

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

不能保证结果数组中的名称字符串将以任何特定顺序出现; 他们并不特别保证按字母顺序出现。

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

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

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

Java – 对Windows资源管理器等字符串进行排序

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