Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Java在大型机中解压PKZIP压缩的文件?_Java_Zip_Unzip_Mainframe_Pkzip - Fatal编程技术网

如何通过Java在大型机中解压PKZIP压缩的文件?

如何通过Java在大型机中解压PKZIP压缩的文件?,java,zip,unzip,mainframe,pkzip,Java,Zip,Unzip,Mainframe,Pkzip,我正试图用Java编写一个程序来解压大型机中PKZIP工具压缩的文件。然而,我试过以下三种方法,它们都不能解决我的问题 由exe 我试着用WinRAR、7Zip和Linux commandunzip打开它。 所有操作均失败,并显示以下错误消息: 存档文件的格式未知或已损坏 通过jdkapi-java.util.ZipFile 如前所述,我还尝试用JDKAPI解压它。 但是,它失败并显示错误消息: IO错误:java.util.zip.ZipException:打开zip文件时出错 作者:Zip4

我正试图用Java编写一个程序来解压大型机中PKZIP工具压缩的文件。然而,我试过以下三种方法,它们都不能解决我的问题

由exe

我试着用WinRAR、7Zip和Linux commandunzip打开它。 所有操作均失败,并显示以下错误消息:

存档文件的格式未知或已损坏

通过jdkapi-java.util.ZipFile

如前所述,我还尝试用JDKAPI解压它。 但是,它失败并显示错误消息:

IO错误:java.util.zip.ZipException:打开zip文件时出错

作者:Zip4J

我也尝试过使用Zip4J。它也失败,并显示错误消息:

原因:java.io.IOException:负寻道偏移量 在java.io.RandomAccessFile.seekNative方法中 位于net.lingala.zip4j.core.HeaderReader.readEndOfCentralDirectoryRecordHeaderReader.java:117 ... 还有5个


请问是否有java lib或linux命令可以在大型机中提取PKZIP压缩的zip文件?非常感谢

我已成功读取在z/OS上用PKZip压缩并传输到Linux的文件。我能够通过java.util.zip*类阅读它们:

        ZipFile ifile = new ZipFile(inFileName);
        // faster to loop through entries than open the zip file as a stream
        Enumeration<? extends ZipEntry> entries = ifile.entries();  

        while ( entries.hasMoreElements()) {
            ZipEntry entry = entries.nextElement();
            if (!entry.isDirectory()) {  // skip directories
                String entryName = entry.getName();
                // code to determine to process omitted
                InputStream zis = ifile.getInputStream(entry); 
                // process the stream
            }
        }
前4个字节应如图所示。另见


即使前4个字节正确,如果文件在传输过程中被截断,也可能导致文件消息损坏

如果连rar和7zip都无法打开该文件,那么您必须假设该文件确实已损坏。您的Java代码在哪里执行大型机或其他程序?在大型机上创建文件时,zip选项是什么?是否存在代码页问题?前两个字节x'504B'即PK是否为ASCII格式?如果不将其作为二进制文件从大型机中取出,则会将其pickle坏掉。您的内容是否在EBCDIC中?如果您使用FTP将文件下载到本地计算机,请100%确保您进行了二进制传输。文本将执行从EBCDIC到ISO-8859的代码转换,这将造成所有类型的混乱。此外,压缩文件中的任何EBCDIC文本都将是EBCDIC,因此必须在某个位置进行转换。似乎zip文件确实已损坏,因为它没有以二进制格式传输,现在已解决,谢谢大家。您好,斯科特,您是对的。我发现xxd命令的结果是:0000000:262e 039c 9d00 0000 9700 e96f 7ca8 6a0d和……o|.j。0000010:bea5 9801 0000 8709 0000 1800 6d00 3c99…………m@radomScott这是一个好数据。0000000:504b 0304 1400 0600 0800 adb0 9A4 E 5306主键。0000010:ee08 0108 1a2e 1FF fbda 1c00 0000 4943
# xxd myfile.zip | head
0000000: 504b 0304 2d00 0000 0800 2c66 a348 eb5e  PK..-.....,f.H.^