java - 如何在 Android 中递归扫描目录

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

如何在 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());

关于java - 如何在 Android 中递归扫描目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11482204/

相关文章:

Java声音只能播放一次?

java - 使用 Fragment 库扩充类 fragment 时出错

java - 控制台上的输入不适用于此 Java 程序 - 为什么?

Python sys.stdin.read(max) 阻塞直到读到max(如果max>=0),阻塞直到EOF else,但是select表示有数据要读取

Java 邮件 : Unable to send email via Yahoo

android - 创建 Samsung S3 的模拟器版本

java - 改造可空参数映射

android - 在android中显示图像

java - 如何使用 JAVA 对 List<String> 中存储的文件名进行自定义排序

php - 使用 php 删除所有文件、文件夹及其子文件夹