Android 查找sd卡上的所有文件
我想找到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
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访问权限,您无法访问它