java – File.list()以不同于2.5的顺序返回文件

如果我在 BookGenerator.java中使用Android 2.2并调用File.list()方法,则页面和章节按照确切的顺序排列,但每当我在Android 4.0上执行时,它都会给出反向页面列表或反向页面顺序.

2.2和4.0之间是否存在兼容性问题?

您不应该依赖listFiles()来获取页面的有序列表:

http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html#listFiles()

“无法保证结果数组中的名称字符串将以任何特定顺序出现;”

您必须根据文件名或lastModified或文件大小创建自己的订购系统.你可以使用Comparator<文件>或比较器<字符串>对于排序SortedSet中的文件,或者如前所述,为要实现Comparable的排序项创建一个自己的类.我建议第一个解决方案,因为将File或String类包装到另一个只是为了这个功能有点愚蠢.

一个内存开销很大的例子:

TreeSet<File> pages = new TreeSet<File>(new Comparator<File>(){
   public int compare(File first, File second) {
      return first.getName().compareTo(second.getName());
   }
});

for (File file : allFiles) {
   pages.add(file());
}

allFiles = pages.toArray();

如果你想要一个更高效的,你必须实现自己的方法来排序数组.

相关文章
相关标签/搜索