如何获取java.io.File.list()
与Windows资源pipe理器中的顺序相同?
在一个程序中,我正在创buildTemp
文件夹,例如Temp1
, Temp2
等等。 但是当我使用java.io.File.list()
来检索文件夹列表时,它给出了Temp1
, Temp10
等等。
请告诉如何获得与在Windows资源pipe理器中显示的订单相同的清单?
谢谢
Windows资源管理器默认显示按名称排序的文件。 查看File.list()
javadoc,
不能保证结果数组中的名称字符串将以任何特定顺序出现; 他们并不特别保证按字母顺序出现。
因此,在使用File.list()
获取文件列表之后,您需要通过文件名Arrays.sort(file.list())
对其进行排序以获取所需的顺序。
你需要编写你自己的比较器。 比较器需要分割文件名字符串,将它们分成连续的非数字字符和数字字符序列。 然后对序列进行排序,在比较之前将一系列数字字符转换为整数。 而且,如果整数相等(由于前导零),则在较短序列之前排序较长的数字序列。
这是一个称为自然排序的特定窗口排序算法的实现。
Java – 对Windows资源管理器等字符串进行排序
简而言之,它将两个字符串拆分为字母数字部分进行比较,并以特定方式比较这些部分以实现这种排序。