首先这里需要对Java8的集合操作有一定了解,下面的代码可以根据传输的字符串来删除一个文件夹中的文件
List<String> curFiles = Arrays.asList(speciesEntity.getPicUrl().split(","));
// 删除图片
// 求 existsFiles中存在 但是curFiles不存在的文件 说明是需要删除的图片
List<String> deleteFilenames = existsFiles.parallelStream()
.filter(existsFile -> !curFiles.contains(existsFile)).collect(Collectors.toList());
for(String deleteFilename : deleteFilenames){
File deleteFile = new File(tarFolder.toString().concat(deleteFilename));
if(deleteFile.exists()){
deleteFile.delete();
}
}
注意:这里用到了parallelStream()为了加快速度进行差集运算,它不一定是会多线程完成,可能仍然处理的过程仍然是主线程进行的。