从sdcard获取所有文件

时间:2012-05-11 17:29:01

标签: 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);

        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”

2 个答案:

答案 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.这是奇怪的代码行。