Android 查找sd卡上的所有文件

Android 查找sd卡上的所有文件,android,sd-card,Android,Sd Card,我想找到SD卡上存储的所有文件。我使用了以下代码: List<File> dir = new ArrayList<File>(); List<File> files = new ArrayList<File>(); File root = new File (Environment.getExternalStorageDirectory().getAbsolutePath()); scan(root); // find root

我想找到SD卡上存储的所有文件。我使用了以下代码:

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);
        }
    }
}
List dir=new ArrayList();
列表文件=新的ArrayList();
文件根=新文件(Environment.getExternalStorageDirectory().getAbsolutePath());
扫描(根);//查找根目录
对于(文件f:dir){//在根目录中查找。。。
扫描(f);
}
Log.i(“files”,“files+files.size());
Log.i(“dir”,“dir.size());
}
公共无效扫描(文件路径){
对于(文件f:path.listFiles()){
if(f.isFile()){
添加(f);
}
否则{
署长加(f);
}
}
}
但我对这个异常有问题:“java.util.ConcurrentModificationException”
我更改列表(dir)并循环它。ListIterator没有帮助。

在列表上进行迭代时,无法将其添加到列表中。请尝试以下方法:

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);
        }
    }
}
List dir=new ArrayList();
列表文件=新的ArrayList();
文件根=新文件(Environment.getExternalStorageDirectory().getAbsolutePath());
列出rootDirs=/。。。查找根目录的代码
对于(文件f:rootDirs){//在根目录中查找。。。
扫描(f);
}
Log.i(“files”,“files+files.size());
Log.i(“dir”,“dir.size());
}
公共无效扫描(文件路径){
对于(文件f:path.listFiles()){
if(f.isFile()){
添加(f);
}
否则{
署长加(f);
扫描(f);
}
}
}

您必须在我编辑的版本中添加一些代码,网址为//。。。查找根目录的代码:将rootDirs声明为空列表,然后执行类似以下操作(文件f:root.listFiles()){if(f.isDirectory())rootDirs.add(f);}如果我设置了第一个目录(而不是/sdcard),例如文件夹“tree”,其中包含工作中的其他文件夹和文件。但如果root是“/sdcard”,他会找到大约3个文件夹和“死在里面”。写入NullPointerException。试着找出问题。稍后再写。感谢…(文件f:root.listFiles()){if(f.isFile()){files.add(f);}否则{rootDirs.add(f);}}文件夹“bugreports=”崩溃后可能会帮助某人。如果扫描SD卡并尝试查找所有文件,则需要查找文件“.android_secure”并从查找列表中删除。因为当你尝试访问此文件时,应用程序崩溃!!!它是一个包含SD卡数据的文件,没有root访问权限,您无法访问它