我在Android设备中存储的文件夹中有一些文件。
文件夹名称=英语/
文件名= 001-001-0000.png,001-001-000.png,001-001-001.png,001-001,002.png,001-001-003.png ...直至001-001 -010.png
我必须按照它们的名称按顺序将它们加载到屏幕上。 我正在使用此代码
String[] files = dir.list();
Arrays.sort(files, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareToIgnoreCase(o2);
}
});
我得到的结果是
001-001-000.png 001-001-0000.png 001-001-001.png 001-001,002.png 001-001-003.png ... 001-001-010.png
但是当我在Windows PC上检查资源管理器时 我有
001-001-0000.png 001-001-000.png 001-001-001.png 001-001,002.png 001-001-003.png ... 001-001-010.png
此处的区别在于,以四个0结尾的文件(001-001-0000.png)在以三个0结尾的文件(001-001-000.png)之前 并且我的代码中需要相同的排序顺序。
答案 0 :(得分:1)
尝试使用此compare
方法:
@Override
public int compare(String o1, String o2) {
String o1_prefix = o1.split(".")[0];
String o2_prefix = o2.split(".")[0];
if(o1_prefix.startsWith(o2_prefix))
return -1;
else if(o2_prefix.startsWith(o1_prefix))
return 1;
else return o1.compareToIgnoreCase(o2);
}
答案 1 :(得分:0)
Windows之类进行排序的原因是因为Windows从Windows 7开始使用“数字排序”。这意味着Windows通过增加数值来对文件进行数字排序。如果您不希望Windows按此数字顺序排序,则可以关闭此功能。
我的来源:http://www.alliancegroup.co.uk/windows7-explorer-sort-order.htm