如何递归扫描Android中的目录并显示文件名?我正在尝试扫描,但它很慢(强制关闭或等待)。我正在使用FileWalker
中给出的{{1}}课程。
答案 0 :(得分:15)
您几乎总是应该从非UI线程访问文件系统。否则,您可能会长时间阻止UI线程并获得ANR。在AsyncTask
的{{1}}。
这是FileWalker的略微优化版本:
doInBackground()
你可以从这样的后台线程中调用它:
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());
}
}
}
}
答案 1 :(得分:0)
System.out.println
调用非常慢(实际上它并不是函数本身,而是基础PrintStream需要花费大量时间在控制台中编写文本)。
用其他东西替换它们应该没问题。例如,您可以创建并返回带有文件名的数组。