如何在Android中递归扫描目录

INC*_*ITO 3 java file-io android directory-traversal android-anr-dialog

如何递归扫描Android中的目录并显示文件名?我正在尝试扫描,但它很慢(强制关闭或等待).我正在使用在这个问题FileWalker的单独答案中给出的课程.

Dhe*_*.S. 16

您几乎总是应该从非UI线程访问文件系统.否则,您可能会长时间阻止UI线程并获得ANR.在运行FileWalker AsyncTaskdoInBackground().

这是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());
            }
        }
    }   
}
Run Code Online (Sandbox Code Playgroud)

您可以从后台线程调用它,如下所示:

Filewalker fw = new Filewalker();
fw.walk(context.getFilesDir());
Run Code Online (Sandbox Code Playgroud)