如何在Android中递归扫描目录并显示文件名?我正在尝试扫描,但是速度很慢(强制关闭或等待)。我正在使用在单独的答案to this question中给出的FileWalker类。

最佳答案

您几乎应该始终仅从非UI线程访问文件系统。否则,您可能会长时间阻塞UI线程并获得ANR。以AsyncTaskdoInBackground()运行FileWalker。

这是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());

07-24 14:40