我想从sdcard获取所有路径文件(及其大小!!)。
我改变了代码:
List<File> dir = new ArrayList<File>();
List<File> files = new ArrayList<File>();
File root = new File (Environment.getExternalStorageDirectory().getAbsolutePath());
scan(root);
for (File f : dir) {
scan(f);
}
public void scan (File path) {
for (File f : path.listFiles()) {
if (f.isFile()) {
files.add(f);
}
else {
dir.add(f);
}
}
}
但有一个问题。我循环“dir”并同时改变他。我有异常“java.util.ConcurrentModificationException”
答案 0 :(得分:1)
此files[i + j] = files[i];
行会导致问题。以这种方式使用
for (int i = 0, j = 1; i < files.length; i++) {
if (files[i].isFile())
Log.i("file:" + files[i].getName(), " " + files[i].getAbsolutePath());
else {
/* if current file is derictory ->
save him in end of array with directoty paths*/
int testsum=i+j;
if(testsum<=files.length)
{
files[i + j] = files[i];
Log.i("dir:" + files[i].getName(), " " + files[i].getAbsolutePath());
}
else
{
}
}
}
答案 1 :(得分:0)
此行中的问题
files[i + j] = files[i];
当i = files.length - 1.这是奇怪的代码行。