Android出现java.util.ConcurrentModificationException异常

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012041204/article/details/82422059

ConcurrentModificationException 抛出的条件是: 一个迭代器在迭代集合的时候 集合被修改。

比如我在迭代一个目录集合,并进行目录的删除,这个时候就会出现这个异常。

所以我们可以先迭代到一个ArrayList上保存,然后再进行删除操作
下面是我在进行文件删除时使用的代码:

 @Override
    protected Boolean doInBackground(Iterator<String>... iterators) {

        Iterator<String> iterator = iterators[0];   //删除的文件列表
        ArrayList<String> fileNames = new ArrayList<>();
        boolean success = false; //删除的状态
        /*
        *遍历保存到ArrayList中,不能直接使用迭代器进行删除,会导致 java.util.ConcurrentModificationException
        * 因为迭代器不允许在使用过程中修改集合,而删除文件就是在修改集合内容。
        * */
        while (iterator.hasNext()){
            String filePath = iterator.next();
            fileNames.add(filePath);
        }

        for(int i = 0; i < fileNames.size(); i++){
            if(FileUtil.deleteFiles(fileNames.get(i))){
                success = true;
            }else{
                success = false;
                return success;
            }
        }
        return success;
    }

猜你喜欢

转载自blog.csdn.net/u012041204/article/details/82422059