Find all files on sd card

血红的双手。 提交于 2019-12-01 19:40:21

问题


I want to find all files stored on sdCard. I used this code:

List<File> dir = new ArrayList<File>();
List<File> files = new ArrayList<File>();

   File root = new File (Environment.getExternalStorageDirectory().getAbsolutePath());

    scan(root); // find root directories

    for (File f : dir) { // find in root...
       scan(f);
    }

    Log.i("files", "" + files.size());
    Log.i("dir", "" + dir.size());


}

 public void scan (File path) {

    for (File f : path.listFiles()) {
        if (f.isFile()) {
            files.add(f);
        }
        else {
            dir.add(f);
        }
    }
}

But I have problem with this exception: "java.util.ConcurrentModificationException" I change list (dir) and loop it. The ListIterator doesn't help.


回答1:


You can't add to a list while you're iterating over it. Try this instead:

List<File> dir = new ArrayList<File>();
List<File> files = new ArrayList<File>();

   File root = new File (Environment.getExternalStorageDirectory().getAbsolutePath());

    List<File> rootDirs = //... code to find root directories

    for (File f : rootDirs) { // find in root...
       scan(f);
    }

    Log.i("files", "" + files.size());
    Log.i("dir", "" + dir.size());


}

 public void scan (File path) {

    for (File f : path.listFiles()) {
        if (f.isFile()) {
            files.add(f);
        }
        else {
            dir.add(f);
            scan(f);
        }
    }
}


来源:https://stackoverflow.com/questions/10557685/find-all-files-on-sd-card

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!