如何在Android中递归扫描目录

时间:2012-07-14 08:24:28

标签: java android file-io android-anr-dialog directory-traversal

如何递归扫描Android中的目录并显示文件名?我正在尝试扫描,但它很慢(强制关闭或等待)。我正在使用FileWalker中给出的{{1}}课程。

2 个答案:

答案 0 :(得分:15)

您几乎总是应该从非UI线程访问文件系统。否则,您可能会长时间阻止UI线程并获得ANR。在AsyncTask的{​​{1}}。

中运行FileWalker

这是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需要花费大量时间在控制台中编写文本)。

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