我正在尝试使用以下方式获取设备上具有相同扩展名的所有文件:
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/