解决Java下载Zip压缩文件,解压后报不可预料的压缩文件末端

网上找到的问题原因是:ZipOutputStream的流没有关闭

其实说的也没错,但是我们都知道现在的java是可以自动关闭的,如下:

try(

ZipOutputStream zos = new ZipOutputStream(fileOutputStream)

){}

 

尽管如此,还是会报该错误,原因就在于这个关闭流的时机是在整体try执行完之后关闭,而我们一般会在try里面直接写respones的返回流信息

response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(fileName, "UTF-8") + ".zip");
outputStream = response.getOutputStream();
outputStream.write(data);

致使还没自动关闭ZipOutputStream 流就已经输出了,所以我们要在返回respones之前手动关闭ZipOutputStream的流

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页