在做javaweb导出zip文件时,360压缩软件可以正常解压。但是winrar软件却报:不可预料的压缩文件末端 错误。在网上搜刮了许久,基本上解决方法是下以下两种:

一、输出流是否关闭,关闭顺序是否正确。先打开的后关闭。
二、是否调用ZipOutputStream的close()方法

closeEntry()方法是在putNextEntry()方法后调用。一般是在循环中使用。
最后需要调用close方法。
这两点。我排查了许久,仍然没有解决。
继续Google,发现博主zh521zh 写的一句话:

close方法必须在其他地方使用之前关闭

而我却是在ServletOutputStream 赋值之后才调用close方法。于是乎,方法提前,果真完美解决了问题!
启示:输出流不用之后及时关闭。

有效代码:

        response.reset(); // 非常重要FileInputStream fileInputStream = null;File returnFile = null;int pageSize=5000;String path= PropertiesFactory.getUploadProp().getProperty("localFileUrl");String absoZipPath = path+File.separator +".zip";FileOutputStream fo = new FileOutputStream(absoZipPath);ZipOutputStream zipout = new ZipOutputStream(fo);       byte[] buffer = new byte[1024];    int page = num/pageSize;for(int i=0;i<=page;i++){File returnFile = null;ZipEntry ze = new ZipEntry(returnFile.getName());zipout.putNextEntry(ze);FileInputStream fis = new FileInputStream(returnFile);int len=0;// 读入需要下载的文件的内容,打包到zip文件while ((len = fis.read(buffer, 0, buffer.length)) != -1) {zipout.write(buffer, 0, len);}zipout.flush();fis.close();zipout.closeEntry();}zipout.close();fo.close();//关键....ServletOutputStream out = null;String filename = "";Locale locale = request.getLocale();String userAgent = request.getHeader("user-agent");if (userAgent != null && userAgent.contains("Trident") && locale != null&& "zh".equalsIgnoreCase(locale.getLanguage()) && "CN".equalsIgnoreCase(locale.getCountry())) {filename = new String(returnFile.getName().getBytes("GB18030"), "ISO8859-1");} else {filename = new String(returnFile.getName().getBytes("UTF-8"), "ISO8859-1");}response.setContentType("application/octet-stream");response.setHeader("Content-Disposition", "attachment; filename=" + filename);out = response.getOutputStream();IOUtils.copy(fileInputStream, out);

zipoutputstream 进行解压缩时winrar提示:不可预料的压缩文件末端相关推荐

  1. Java多word文件生成后进行压缩并导出下载后,压缩文件损坏并提示“不可预料的压缩文件末端”和“CRC校验失败”

    Java多word文件生成后进行压缩并导出下载后,压缩文件损坏并提示"不可预料的压缩文件末端"和"CRC校验失败" WinRAR 打开情况: 提示不可预料的压缩 ...

  2. 使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案

    使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案 问题描述: 如下图所示,在解压Java程序生成的ZIP压缩包时出现不可预料的压缩文件末端, 问题分袖: 出现上面的情况,大概有 ...

  3. 已解决解压zip文件,抛出异常:不可预料的压缩文件末端的正确解决方法(亲测有效)

    已解决解压zip文件,抛出异常:不可预料的压缩文件末端的正确解决方法(亲测有效) 文章目录 报错问题 报错原因 解决方法 千人全栈VIP答疑群联系博主帮忙解决报错 报错问题 粉丝群里面的一个小伙伴遇到 ...

  4. 使用zip,出现“不可预料的压缩文件末端”问题

    看下面的代码,如果把输出流的关闭顺序改了,一定会出现"不可预料的压缩文件末端"的问题. 要解决这个问题,就需要正确的关闭流. 1.根据"先开后关"的原则: 2. ...

  5. RAR文件解压缩时系统提示“CRC校验失败,文件被破坏”,修复损坏文件的办法!

    办法一:WinRAR本身就带有压缩包修复功能.点击菜单"工具"下的"修复压缩文件"即可,快捷键是"ALT+R".此法可修复一部分压缩包 的常 ...

  6. ZipOutputStream 生成压缩文件,用winrar打开后报”不可预料的压缩文件末端”错误

    问题产生的原因:可能是用到文件流未正确关闭 解决办法是:1.检查待压缩文件的流是否都正常关闭,且按顺序 2.生成压缩文件的过程中用到的流是否正常关闭,且按顺序 try {File zipFile = ...

  7. 复制iso镜像文件到U盘时,提示对于目标文件系统,文件“CentOS-7-x86_64-DVD_1810.iso”过大

    问题: 复制iso镜像文件到U盘时,提示对于目标文件系统,文件"CentOS-7-x86_64-DVD_1810.iso"过大 如下图所示: 原因: U盘的格式为FAT32,对于F ...

  8. Winrar从命令行查看压缩文件内容

    如果能从命令行查看压缩文件内容,可以避免有时候的弹窗: 看了一下,说是v参数是查看: 找不到路径:先加一下path环境变量: 输个命令:错了: 用 -v,但是没有在命令行显示:而是弹出了Winrar的 ...

  9. android 工程中引入第三方JAR包后安装APK时老是提示找不到库文件?

    网上查都说是通过添加中Build Path或者使用User library来添加,我不知道这些复杂粘贴的人测试过没,反正我测试了好久都不行,估计是我RP不行,这样添加到后编译会通过,但运行的时候就会提 ...

  10. rar命令行解压zip文件提示不是 rar 压缩文件,没有可提取的文件的解决办法

    其实很简单,把rar.exe改成winrar.exe就行了,rar.exe本来就只支持rar格式的压缩和解压

最新文章

  1. 安卓端网页浏览过程中实时更新title的web实现
  2. 如何避免在IE内核时,按BackSpace时进行网页会进行回退
  3. 【NOIP2014】子矩阵
  4. php mysql 菜鸟_PHP 和 MySQL 基础教程(四)
  5. 服务器选购seo优化规则,需要做SEO的网站,购买服务器请注意六点
  6. Python练习:目录与文件操作
  7. Java 如何抛出异常、自定义异常、手动或主动抛出异常
  8. java jpa 字段 关联_jpa查询关联表懒加载数据initialize proxy no session
  9. 《Oracle从入门到精通》
  10. c语言试题1答案,c语言试题1有答案
  11. Win10 LTSC版如何安装应用商店Microsoft Store
  12. excel双条件筛选
  13. STM32开发资料链接分享
  14. mx550和3050参数对比 mx550和rtx3050差多少
  15. 如何优雅的生活 --工作后
  16. 读《大四学生收到英国诺丁汉大学博士录取通知书》想到
  17. IDEA中Maven项目莫名其妙出现很多飘红
  18. 缅怀钟扬教授,5分钟视频回顾伟大植物学家钟扬对人类的贡献
  19. 软件设计师_计算机系统——进制加减法
  20. 小米笔记本Air12.5与Deepin系统体验

热门文章

  1. 如何实现网页的自动登录
  2. 必应搜索昨日起出现大规模的无法访问
  3. 详解opencv的HOG描述子维度数目的计算原理
  4. 解决鼠标右键失效(响应极慢)
  5. 0.靡不有初 鲜克有终
  6. 徐波 博士 计算机,中文问答系统中问题分类技术研究
  7. 网站地图怎么做?dedecms网站地图制作方法
  8. 迅雷Beta来了,这软件太实用了,磁力随心下
  9. Raspberry pi设置Samba
  10. 手把手教你mockjs实际项目快速搭建