Java 如何在Android中递归扫描目录

Java 如何在Android中递归扫描目录,java,android,file-io,android-anr-dialog,directory-traversal,Java,Android,File Io,Android Anr Dialog,Directory Traversal,如何递归扫描Android中的目录并显示文件名?我正在尝试扫描,但速度很慢(强制关闭或等待)。我使用的是另一个答案中给出的FileWalker类。System.out.println调用非常慢(其实不是函数本身,而是底层的PrintStream,在控制台中编写文本需要很多时间) 用别的东西代替它们,应该没问题。例如,您可以创建并返回一个带有文件名的数组。您几乎应该始终只从非UI线程访问文件系统。否则,您可能会长期阻塞UI线程并获得ANR。在AsyncTask的doInBackground()中运

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

System.out.println
调用非常慢(其实不是函数本身,而是底层的PrintStream,在控制台中编写文本需要很多时间)


用别的东西代替它们,应该没问题。例如,您可以创建并返回一个带有文件名的数组。

您几乎应该始终只从非UI线程访问文件系统。否则,您可能会长期阻塞UI线程并获得ANR。在
AsyncTask
doInBackground()
中运行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());

请原谅我的天真问题,这里的上下文是如何分配的?我通常将它作为参数从活动传递到函数,但我在这里看不到参数?如果没有,上下文会给我一个“无法解决”的编译错误。@您可以使用
活动
应用程序
的实例作为实例。这需要更多的阅读,但您已经给了我一个方向,谢谢Dheeraj。