问题解压文件出现“不可预料的压缩文件末端”错误,用360解压和快压解压没有问题,用WinRAR解压出错

后台代码压缩方法

 /*** 递归压缩文件夹* @param srcRootDir 压缩文件夹根目录的子路径* @param file 当前递归压缩的文件或目录对象* @param zos 压缩文件存储对象* @throws Exception*/
public static void zip(String srcRootDir, File file, ZipOutputStream zos) throws Exception{if (file == null) {return;}                String subPath = file.getAbsolutePath();int index = subPath.indexOf(srcRootDir);if (index != -1) {subPath = subPath.substring(srcRootDir.length());}//如果是文件,则直接压缩该文件if (file.isFile()) {         int count, bufferLen = 1024;byte data[] = new byte[bufferLen];//获取文件相对于压缩文件夹根目录的子路径zos.putNextEntry(new ZipEntry(subPath));BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));while ((count = bis.read(data, 0, bufferLen)) != -1) {zos.write(data, 0, count);}bis.close();zos.closeEntry();}else {//压缩目录中的文件或子目录File[] childFiles = file.listFiles();if(childFiles.length==0){zos.putNextEntry(new ZipEntry(subPath+"/"));}else{for (int n=0; n<childFiles.length; n++) {childFiles[n].getAbsolutePath().indexOf(file.getAbsolutePath());zip(srcRootDir, childFiles[n], zos);}}}}

调用zipUtil.zip方法
ZipOutputStream out = new ZipOutputStream(fileOutStream);
ZipUtil.zip(infile.getAbsolutePath() , infile, out);
out.close();//之前只关闭out.closeEntry() 并没有将out流关闭
fileOutStream.close();

ZipOutStream 最开始调用closeEntry()去关闭流,以为跟close(方法一样,导致了解压文件出错。流关闭一定要用close(),closeEntry()关闭是针对往压缩文件写入实体,之后在调用closeEntry(),这两个有这很大的区别。

总结下
(1)出现解压出错,可以先排查是否流没有进行关闭
(2)排查流的关闭顺序是否正确,先打开的流,最后关闭。

java用zipOutputStream压缩后用WinRAR解压出现“不可预料的压缩文件末端”错误相关推荐

  1. 将一段压缩后的字符串解压,并且顺序输出

    将一段压缩后的字符串解压,并且顺序输出. 算法描述: 解压规则: 每个字符串后面跟着一个数字,表示这个字符重复的次数. 例如:'a5'解压后为'aaaaa', 'abc3'解压后为'abcabcbac ...

  2. c# 压缩html,纯JS解压文本,使用C#GZIPStream压缩

    Pako 是一个完整的和现代的 Zlib 港口. 这里有一个非常简单的例子,你可以从那里工作. pako.js 你可以像这样解压: Gunzipping binary gzipped string / ...

  3. WinRAR解压兵贵神速

    经常解压文件的朋友们可能知道,我们在使用WinRAR解压一些较大的压缩文件时速度总是很慢.造成这个现象的原因是由于在默认情况下WinRAR的临时文件解压文件一般都是放在"C:\Documen ...

  4. 如何用WinRAR解压.7z.00x分卷压缩文件

    如何用WinRAR解压.7z.00x分卷压缩文件   在win10操作系统中,在D:\Test\test的目录下有若干test.7z.00x分卷压缩文件(后缀从001到00x),下面以test.7z. ...

  5. Linux学习笔记017---文件解压命令的使用_压缩解压

    JAVA技术交流QQ群:170933152 找了两个,第一个好点,压缩 [root@sqb-v06 local]# tar -zcvf /usr/local/nginx-1.7.4_tar.gz /u ...

  6. linux 解压所有以zip结尾的文件_Linux下的压缩zip,解压缩unzip命令详解及实例

    摘自:https://www.cnblogs.com/yves0923/p/10965021.html Linux下的压缩解压缩命令详解及实例 实例:压缩服务器上当前目录的内容为xxx.zip文件 z ...

  7. 设置winrar解压war文件

    设置winrar解压war文件 前言 设置winrar解压的格式 1. 打开WinRAR, 选项->设置 2. 点击"集成" 3. 效果展示 前言 压缩软件改用了winrar ...

  8. 您必须有下列压缩分卷才能继续解压

    这要求将同一个项目的所有文件放一起后才可解压,目前正在解压的文件有一部分在下一个压缩文件里. 我解压112文件,要求有113才能解压 所以要按照它的要求尽量下全文件后解压

  9. linux 解压 视频插件,linux下压缩解压缩命令

    zip/gzip 命令 linux zip命令参数列表: -a 将文件转成ASCII模式 -F 尝试修复损坏的压缩文件 -h 显示帮助界面 -m 将文件压缩之后,删除源文件 -n 特定字符串 不压缩具 ...

  10. C# 关于压缩、加密、解压问题

    本文探讨的是关于C#TXT文件的压缩.加密以及解压问题,采用的是密钥方式,可以先进行加密再进行压缩包导入到桌面. 界面如下: 源文件:想要压缩的TXT文件,里边必须有东西,不然代码会报错 压缩文件:要 ...

最新文章

  1. Python的常用包有哪些,分别有什么作用?
  2. Ansible简单介绍及安装部署详解
  3. JAVAEE框架之Spring AOP
  4. C++模板剖析:函数模板、类模板解析
  5. html-表单的应用
  6. 【华为云技术分享】大数据实践解析(下):Spark的读写流程分析
  7. android textview 动态高度自适应,TextView自适应高度(解决_UITextContainerView布局问题)...
  8. 第一:Python安装需要的第三方库时,命令行输入pip提示不是内部或外部命令
  9. 【每日算法Day 65】你能顺利救出地下城里的公主吗?
  10. css 文字超出变 ... 点点点
  11. jquery左边滚动,完毕后跳转回来
  12. Mentor许可、许可分析、分析许可
  13. 联盟链之hyperledger-fabric
  14. web 计算器_计算器中的奢侈品——CASIO S200
  15. 系统集成方式:数据集成、控制集成
  16. 华东师范大学计算机模拟试题,华东师范大学计算机机试真题
  17. 服务器文件变更监控,监控文件夹变化并ftp到服务器
  18. cas55266-17-6四羧基苯基卟啉铁简称TCPP-Fe(3+)齐岳定制β-硝基-5, 10,15, 20-四苯基卟啉镍[NiTPP(NO2)]供应卟啉定制产品
  19. (每日一练c语言)写入字符串到文件txt
  20. php中的echo单引号_PHP echo用法详解

热门文章

  1. Assassin暗杀者-自用短小精悍的webshell管理工具分享
  2. HDU 4415 Assassin's Creed(贪心)
  3. MySQL完整笔记 总结
  4. XXS靶场haozi
  5. java获取发件人_Java实现伪造发件人发送邮件
  6. Three.js的uv坐标贴图理解
  7. Unity3D笔记第十五天——Unity2D技术
  8. 随缘刷题算法学习笔记
  9. windows文件服务器双机热备_几款Windows与Linux双机热备软件推荐
  10. ​KAKA NFT | 潮物来袭!烤仔英雄系列NFT盲盒即将发售~