我有一个大的zip文件,4.3G.它包含大约100k条目.
我在Linux上使用Java 1.6.0_14,Ubuntu 32位读取它,并获得以下异常.
java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1200(ZipFile.java:29)
at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:447)
at java.util.zip.ZipFile$1.fill(ZipFile.java:230)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:141)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
我没有任何其他ZIP文件的问题(处理它们的代码非常成熟)我已经验证我可以使用’unzip’从命令行正确解压缩zip文件.
有线索吗?谢谢!
解决方法:
Zip文件大小超过4GB,要求zip文件阅读器支持PKWARE的ZIP64扩展.
在Java 6之前,这种支持在java.util.zip类中不可用,并且最近才被添加到Java 7中(不用说,在编写本文时,这不是GA版本).
标签:java,zip
来源: https://codeday.me/bug/20191002/1844548.html
我有一个大的zip文件,4.3G.它包含大约100k条目.我在Linux上使用Java 1.6.0_14,Ubuntu 32位读取它,并获得以下异常.java.util.zip.ZipException: invalid LOC header (bad signature)at java.util.zip.ZipFile.read(Native Method)at java.util.zip.Zi...
问题来源是我做的一个
文件
导出功能
java
创建
zip
文件
,结果在我的电脑上能够打开,在同事的mac或者未安装360压缩的电脑上打不开,然后我就分析应该是代码创建的这个
文件
有问题,可能360压缩做了某种处理,其他没做处理的打不开。
1.检查程序输出流是否关闭
2.流的关闭顺序是否正确
这里有两个问题
1.先开的流应该后关
2.流要在调用它之前的地方进行关闭,我是调用了 byteOutputStream.toByteArray(); 之后才关闭,所以
会
有问题
热修复一般用于版本发布之后无需版本更新而实现代码逻辑修复,AndFix作为阿里的Android热修复开源框架具有立即生效 但同时其资源
文件
不可作为修复对象,官方地址
使用方法非常简单
Initialize PatchManager
patchManager = new PatchManager(context);
patchManager.init(appversion);//current version
Load patch
patchManager.loadPatch();
read
zip
=
zip
file.
Zip
File(path, ‘r’)
2,获取压缩包内的全部
文件
(返回
文件
/夹 list结构)
listname = read
zip
.namelist()
例如,压缩包(Z)内的
文件
结构为:
文件
夹A:(
文件
夹内
文件
有) a1、b1、c1……
文件
夹B:(
文件
夹内
文件
有) a2、2b、c2……
文件
夹C:(
文件
夹内
文件
有) a3、b3、c3……
则 listname 列表
文件
如下(严格按如下顺序):
A, A/a1, A/b1, A/c1, B,