场景 : 在对多文件打包下载的时候出现了问题 在使用360解压时不会出现 错误 在使用 rar 7z等软件解压时会出现(不可预料的压缩文件末端)
代码"
//根据ID查询出所有的附件
List<BusinessFileDO> list = businessFileDao.findPathByBusinessId(ID);
ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream());
List<InputStream> streamList = new ArrayList<>();
for (BusinessFileDO fileDO : list) {
InputStream inputStream;
String fileName = fileDO.getFileName();
String fullPath = fileDO.getFullPath();
String webServer = fileDO.getWebServer();
//构建附件路径
URL url = new URL(webServer + fullPath);
//下载
inputStream = url.openStream();
streamList.add(inputStream);
ZipUtil.createZipList(zipOutputStream, inputStream, fileName);
}
zipOutputStream.closeEntry();
后来发现是没有关闭流的问题 :
一开始使用的是 zipOutputStream.closeEntry();
java.util.zip.ZipInputStream类主要方法
解决办法:
需要关闭流 不然会出现压缩包打开(不可预料的压缩文件末端)
zipOutputStream.close();