java创建的zip无法打开或打开显示不可预料的压缩文件 您所在的位置:网站首页 7z压缩打不开怎么改成W压 java创建的zip无法打开或打开显示不可预料的压缩文件

java创建的zip无法打开或打开显示不可预料的压缩文件

2024-07-17 09:44| 来源: 网络整理| 查看: 265

问题出现

问题来源是我做的一个文件导出功能 java创建zip文件,结果在我的电脑上能够打开,在同事的mac或者未安装360压缩的电脑上打不开,然后我就分析应该是代码创建的这个文件有问题,可能360压缩做了某种处理,其他没做处理的打不开。

问题如下 在这里插入图片描述

在这里插入图片描述 先贴结论

1.检查程序输出流是否关闭 2.流的关闭顺序是否正确

问题代码

这里有两个问题 1.先开的流应该后关 2.流要在调用它之前的地方进行关闭,我是调用了 byteOutputStream.toByteArray(); 之后才关闭,所以会有问题 在这里插入图片描述

问题解决 1.把流的关闭顺序调整,然后关闭的位置放在调用它之前的地方关闭 2.在调用它之前的地方先调用一下流的 finish() 方法

如图 在这里插入图片描述 还有一种方法,就是看可以后关,但是在其他调用的地方之前调用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 实验室设备网 版权所有