List对里面元素进行过滤删除

来源:互联网 发布:网络上怼是什么意思 编辑:程序博客网 时间:2024/06/08 06:04

上篇文章写到了对文件进行批量上传,其中遇到一个问题,就是针对用户上传来的文件进行筛选删除

错误的写法:

/** 排除有误的图片 **/List<MultipartFile> files = userBean.getNewPhoto();for(MultipartFile file : files){//名字是否合适if(file.getName() == null && file.getName().equals("")){files.remove(file);continue;}//是否是图片boolean isImg = FileUtil.filterType(file.getContentType());if (!isImg) {files.remove(file);continue;}//是否大小合适boolean isSuitableSize = FileUtil.filterFileSize(file);if (!isSuitableSize) {files.remove(file);continue;}}

咋一看,好像没什么错,其实仔细一想,发现问题,每次删除完之后,那么List就少1,所以会出现错误


正确的写法:

/** 排除有误的图片 **/List<MultipartFile> files = userBean.getNewPhoto();Iterator<MultipartFile> iter= files.iterator();while (iter.hasNext()){MultipartFile file= iter.next();//名字是否合适if(file.getName() == null && file.getName().equals("")){iter.remove();continue;}//是否是图片boolean isImg = FileUtil.filterType(file.getContentType());if (!isImg) {iter.remove();continue;}//是否大小合适boolean isSuitableSize = FileUtil.filterFileSize(file);if (!isSuitableSize) {iter.remove();continue;}}


里面的小方法:

/** * 过滤文件 *  * @param types * @return */public static boolean filterType(String type) {for (String temp : FinalValues.userRegisterAllowFileTypeList) {if (temp.equals(type)){return true;}}return false;}/** * 过滤图片的大小 * @param multipartFile * @return */public static boolean filterFileSize(MultipartFile multipartFile) {if(multipartFile.getSize() <0 || multipartFile.getSize() > FinalValues.MAX_ALBUM_PHOTO_SIZE){return false;}return true;}


1 0
原创粉丝点击