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

Riz*_*van 4 java android android-webview android-2.2-froyo android-4.0-ice-cream-sandwich

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

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

And*_*tha 5

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

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

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

您必须根据文件名或lastModified或文件大小创建自己的订购系统.您可以使用Comparator <File>或Comparator <String>对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();
Run Code Online (Sandbox Code Playgroud)

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