java - 尝试获取具有相同扩展名的所有文件后 Activity 卡住

标签 java android

我正在尝试使用以下方式获取设备上具有相同扩展名的所有文件:

private void scanForEpubs() {
    File[] file = Environment.getExternalStorageDirectory().listFiles();
    for (File ff : file) {
        if (ff.isDirectory()) scanForEpubs(f);
        if (ff.isFile() && ff.getName().endsWith(".epub")) {
            Log.d(TAG, "scanForEpubs: " + ff.toString());
        }
    }
}

但是该 Activity 卡在空白屏幕上并且不会加载任何内容。

Stacktrace 被一条消息淹没:

I/art: Background sticky concurrent mark sweep GC freed 49529(2MB) AllocSpace objects, 0(0B) LOS objects, 9% free, 21MB/23MB, paused 10.291ms total 62.505ms

最佳答案

尝试稍微更改一下代码:

 if (ff.isDirectory()) {
    //here instead of f you should put ff
     scanForEpubs(ff);
 }else{
      if (ff.isFile() && ff.getName().endsWith(".epub")) {
            Log.d(TAG, "scanForEpubs: " + ff.toString());
      }
 }

您正在做的是进入递归无限循环。

关于java - 尝试获取具有相同扩展名的所有文件后 Activity 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47950583/

相关文章:

android - PorterDuff.Mode 在 android graphics 中是什么意思。它有什么作用?

java - 表单上的 Vaadin 属性格式化程序

Java MD5 哈希,我该怎么办?

java - 使用 maven 依赖项从 ant 运行项目 java 类

android - 自定义数字时钟

android - 在没有 Android Beam 的情况下使用 NFC 与两部 Android 手机通信

java - 没有用于方案的文件系统:null

java对一组数据的不同排序方法

java - Android 中所有按钮的通用主题

android - Android 应用程序弹出此处 map 错误消息未知