查找SD卡上的所有文件

Ale*_*lex 4 android sd-card

我想找到存储在sdCard上的所有文件.我用过这段代码:

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我有这个异常的问题:"java.util.ConcurrentModificationException"我改变列表(dir)并循环它.ListIterator没有帮助.

Fis*_*ath 5

在迭代时,您无法添加到列表中.试试这个:

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 也许帮助别人.如果扫描SD卡并尝试查找所有文件,需要找到文件".android_secure"并从查找列表中删除.当您尝试访问此文件时,应用程序崩溃!它是包含有关您的sdCard数据的文件,如果没有root访问权限,您将无法访问 (2认同)