我编写了一个应用程序来显示 android 的整个文件系统的平面列表。整个文件系统的平面列表是通过递归方法构造的(如下)。
现在问题来了:即使代码没有更改,每次获得的路径总数有时也会不同(例如,结果在 +- 100 条路径左右变化)。请注意,仅当mLevelLimit设置为 > 0 时(即执行递归时)才会出现此问题。
private int mLevelLimit = 3; // the depth of the path to display
private int mLevelCount = 0;
private FileFilter mDirectoriesFilter = new FileFilter() {
public boolean accept(File file) {
return file.isDirectory();
}
};
/**
* Get entire system folder list.
*
* @param parentDirectory
* the root directory
*/
private List<File> getFoldersList(File parentDirectory) {
ArrayList<File> folderList = new ArrayList<File>();
File[] files = parentDirectory.listFiles(mDirectoriesFilter);
if (files != null) {
for (File file : files) {
folderList.add(file);
if (mLevelCount < mLevelLimit) {
mLevelCount++;
folderList.addAll(getFoldersList(file));
mLevelCount--;
}
}
}
return folderList;
}
我尝试搜索 File.listFiles() API 是否存在任何已知问题,但找不到任何结果。所以我想知道我的递归方法是否有问题。任何帮助将不胜感激。谢谢!