java创建的zip无法打开或打开显示不可预料的压缩文件 | 您所在的位置:网站首页 › 7z压缩打不开怎么改成W压 › java创建的zip无法打开或打开显示不可预料的压缩文件 |
问题出现 问题来源是我做的一个文件导出功能 java创建zip文件,结果在我的电脑上能够打开,在同事的mac或者未安装360压缩的电脑上打不开,然后我就分析应该是代码创建的这个文件有问题,可能360压缩做了某种处理,其他没做处理的打不开。 问题如下
1.检查程序输出流是否关闭 2.流的关闭顺序是否正确 问题代码 这里有两个问题 1.先开的流应该后关 2.流要在调用它之前的地方进行关闭,我是调用了 byteOutputStream.toByteArray(); 之后才关闭,所以会有问题 问题解决 1.把流的关闭顺序调整,然后关闭的位置放在调用它之前的地方关闭 2.在调用它之前的地方先调用一下流的 finish() 方法 如图 问题原因 其实就是流在close之前会调用一下finish方法,把缓存的数据给刷新一下,所以上面 byteOutputStream.toByteArray(); 这行代码的数据其实是不完整的,这就是导致问题的关键。 public void close() throws IOException { if (!closed) { super.close(); closed = true; } } public void close() throws IOException { if (!closed) { finish(); if (usesDefaultDeflater) def.end(); out.close(); closed = true; } } |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |