【发布时间】:2016-11-12 13:23:43
【问题描述】:
我正在尝试用 Java 编写一个程序来解压缩由 Mainframe 中的 PKZIP 工具压缩的文件。但是,我尝试了以下 3 种方法,它们都不能解决我的问题。
-
通过 exe。
我尝试通过 WinRAR、7Zip 和 Linux 命令(解压缩)打开它。 全部失败并显示以下错误消息:
存档格式未知或已损坏
-
通过 JDK API - java.util.ZipFile
我也尝试过通过 JDK API 解压缩它,如this website 所述。 但是,它失败并显示错误消息:
IO 错误:java.util.zip.ZipException:打开 zip 文件时出错
-
通过 Zip4J
我也尝试过使用 Zip4J。它也失败了,有错误消息:
原因:java.io.IOException: Negative seek offset 在 java.io.RandomAccessFile.seek(本机方法) 在 net.lingala.zip4j.core.HeaderReader.readEndOfCentralDirectoryRecord(HeaderReader.java:117) ... 5 更多
请问有没有java lib或者linux命令可以在Mainframe中解压PKZIP压缩的zip文件?非常感谢!
【问题讨论】:
-
如果 rar 和 7zip 都不能打开文件,你必须假设文件确实损坏了。
-
您的 Java 代码在哪里执行(大型机或其他)?在大型机上创建文件时的 zip 选项是什么?是否存在代码页问题?前两个字节是 x'504B'(即“ASCII”中的“PK”)吗?
-
如果你不把它作为“二进制”文件从大型机中取出,你会把它腌制得不好。您的内容是否在 EBCDIC 中?
-
如果您使用 FTP 将文件下载到本地计算机,请确保 100% 确保您进行了二进制传输。文本将进行从 EBCDIC 到 ISO-8859 的代码转换,这将造成各种类型的混乱。此外,压缩文件中的任何 EBCDIC 文本都将是 EBCDIC,因此必须在某处进行转换。
-
看来zip文件确实是因为不是二进制传输而损坏了,现在已经解决了,谢谢大家。
标签: java zip unzip mainframe pkzip