0
点赞
收藏
分享

微信扫一扫

批量下载文件,循环中文件流没有关闭导致每次下载会累加之前的下载文件

耳一文 2022-03-12 阅读 33


/**
* 压缩
*
* @param files 多文件
* @param zipFilePath 目标压缩文件路径
* @throws IOException
*/
public static void zip(List<File> files, String zipFilePath) throws IOException {
log.info("启用ZIP压缩工具 >>>>>>>>>> ");
if(files == null || files.size() == 0) return;
if(StringUtils.isBlank(zipFilePath)) return;
File zipFile = createFile(zipFilePath);
FileOutputStream fileOutputStream = null;
ZipOutputStream zipOutputStream = null;
FileInputStream inputStream = null;
try {
fileOutputStream = new FileOutputStream(zipFile);
zipOutputStream = new ZipOutputStream(fileOutputStream);
for(File file : files) {
log.info("正在打包文件 -> " + file.getAbsolutePath());
if(file.exists()) {
zipOutputStream.putNextEntry(new ZipEntry(file.getName()));
inputStream = new FileInputStream(file);
int len;
while((len = inputStream.read(BUF)) > 0) {
zipOutputStream.write(BUF, 0, len);
}
zipOutputStream.closeEntry();
inputStream.close(); //解决方案
}
}
log.info("压缩完成 <<<<<<<<<< " + zipFile.getAbsolutePath());
} finally {
if(inputStream != null) {
inputStream.close();
}
if(zipOutputStream != null) {
zipOutputStream.close();
}
if(fileOutputStream != null) {
fileOutputStream.close();
}
}
}

在循环体内,每次创建一个文件输入流对象,最后关闭的时候,只关闭最后一个文件流,导致其他的文件夹没有关闭,下次下载时,就无法删除之前的下载文件,导致下载时总是累加文件


举报

相关推荐

axios 下载文件流

js下载文件

javaweb下载文件

download 下载文件

rust下载文件

JavaWeb:下载文件

axios下载文件

0 条评论