如何递归扫描 Android 中的目录并显示文件名?我正在尝试扫描,但速度很慢(强制关闭或等待)。我正在使用这个问题FileWalker
的单独答案中给出的类。
问问题
10222 次
2 回答
19
您应该几乎总是只从非 UI 线程访问文件系统。否则,您可能会长时间阻塞 UI 线程并获得 ANR。运行FileWalker 在AsyncTask
.doInBackground()
这是 FileWalker 的略微优化版本:
public class Filewalker {
public void walk(File root) {
File[] list = root.listFiles();
for (File f : list) {
if (f.isDirectory()) {
Log.d("", "Dir: " + f.getAbsoluteFile());
walk(f);
}
else {
Log.d("", "File: " + f.getAbsoluteFile());
}
}
}
}
您可以像这样从后台线程调用它:
Filewalker fw = new Filewalker();
fw.walk(context.getFilesDir());
于 2012-07-14T08:50:52.490 回答
0
System.out.println
调用真的很慢(好吧,这并不是函数本身,而是底层的 PrintStream 需要花费大量时间在控制台中写入文本)。
用别的东西代替它们应该没问题。例如,您可以创建并返回包含文件名的数组。
于 2012-07-14T08:40:38.093 回答