如何获得与Windows资源管理器中相同的java.io.File.list()顺序
如何获得与Windows资源管理器中相同的顺序 在程序中,我正在创建如何获得与Windows资源管理器中相同的java.io.File.list()顺序,java,windows,Java,Windows,如何获得与Windows资源管理器中相同的顺序 在程序中,我正在创建Temp文件夹,例如Temp1,Temp2等等。但是,当我使用java.io.File.list()检索文件夹列表时,它给出了Temp1,Temp10等等 请说明如何获得与Windows资源管理器中显示的相同的订单列表 谢谢默认情况下,Windows资源管理器显示按名称排序的文件。查看javadoc中的File.list() 无法保证结果数组中的名称字符串将以任何特定顺序出现;特别是,它们不能保证按字母顺序出现 因此,在使用fi
Temp
文件夹,例如Temp1
,Temp2
等等。但是,当我使用java.io.File.list()
检索文件夹列表时,它给出了Temp1
,Temp10
等等
请说明如何获得与Windows资源管理器中显示的相同的订单列表
谢谢默认情况下,Windows资源管理器显示按名称排序的文件。查看javadoc中的
File.list()
无法保证结果数组中的名称字符串将以任何特定顺序出现;特别是,它们不能保证按字母顺序出现
因此,在使用
file.list()
获取文件列表后,需要按文件名Arrays.sort(file.list())
对其进行排序,以获得所需的顺序 默认情况下,Windows资源管理器显示按名称排序的文件。查看javadoc中的File.list()
无法保证结果数组中的名称字符串将以任何特定顺序出现;特别是,它们不能保证按字母顺序出现
因此,在使用
file.list()
获取文件列表后,需要按文件名Arrays.sort(file.list())
对其进行排序,以获得所需的顺序 您需要编写自己的比较器。比较器需要拆分文件名字符串,将它们分成连续的非数字字符序列和数字字符序列。然后对序列进行排序,在比较之前将数字字符序列转换为整数。此外,如果整数相等(由于前导零),则将较长的数字序列排序在较短的序列之前。您需要编写自己的比较器。比较器需要拆分文件名字符串,将它们分成连续的非数字字符序列和数字字符序列。然后对序列进行排序,在比较之前将数字字符序列转换为整数。此外,如果整数相等(由于前导零),则将较长的数字序列排序在较短的序列之前。这是一种称为自然排序的特定windows排序算法的实现
简而言之,它将两个字符串拆分为字母-数字部分进行比较,并以特定的方式对这些部分进行比较,以实现这种排序。这是一种称为自然排序的特定windows排序算法的实现
简而言之,它将两个字符串拆分为字母-数字部分进行比较,并以特定的方式对这些部分进行比较,以实现这种排序。使用
集合创建您自己的比较器并对列表进行排序。sort()
?但是需要哪种类型的排序才能与windows order的列表相匹配?@Kishore:问题还不清楚。Windows可以按名称、大小、类型、日期、@jlordo(默认Windows顺序)进行排序。i、 e.Temp1,Temp2等等,没错,jlordo,如果我没记错的话,按名称排序也会以Temp1,temp11,Temp2。。。哎呀,不,我错了。至少在Windows 7中是1、2、11。使用集合创建您自己的比较器和排序列表。sort()
?但是需要哪种类型的排序才能与Windows顺序中的列表相匹配?@Kishore:问题一点也不清楚。Windows可以按名称、大小、类型、日期、@jlordo(默认Windows顺序)进行排序。i、 e.Temp1,Temp2等等,没错,jlordo,如果我没记错的话,按名称排序也会以Temp1,temp11,Temp2。。。哎呀,不,我错了。至少在Windows7中是1,2,11,它给出的顺序与java的默认顺序相同。请允许我只给出有效答案,这是不正确的。Windows资源管理器使用一种称为自然排序的排序,它考虑了名称的数量部分。它的顺序与java的默认顺序相同。请允许我只给出有效答案,这是不正确的。Windows资源管理器使用一种称为自然排序的排序,它考虑了名称的数量部分。