当前位置: 首页 > 知识库问答 >
问题:

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

麹繁
2023-03-14

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

>

  • by exe.

    我试图通过WinRAR、7Zip和Linux命令(解压)打开它。全部失败,错误信息如下:

    档案不是格式未知就是损坏了

    通过jdkapi-java。util。拉链

    正如这个网站所描述的,我还尝试用JDKAPI解压它。但是,它失败并显示错误消息:

    IO错误:java。util。拉链ZipException:打开zip文件时出错

    作者:Zip4J

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

    造成原因:java.io.IOExcture:在net.lingala.zip4j.core.HeaderReader.readEndOfCentralDirectoryRecords(HeaderReader.java:117)java.io.RlandAccessFile.seek(本地方法)的负寻求偏移

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

  • 共有1个答案

    晋坚
    2023-03-14

    我已经成功读取了在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
                }
            }
    

    jar文件格式只是一个zip文件,因此“jar”命令也可以读取此类文件。

    和其他人一样,我怀疑文件可能没有以二进制格式传输,因此已损坏。在Linux上,您可以使用xxd实用程序(通过head管道)转储前几个字节,以查看它是否看起来像zip文件:

    # xxd myfile.zip | head
    0000000: 504b 0304 2d00 0000 0800 2c66 a348 eb5e  PK..-.....,f.H.^
    

    前4个字节应该如图所示。关于zip文件,请参见维基百科条目

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

     类似资料:
    • 问题内容: 任何人都可以向我展示在我一直在搜索的Java中压缩和解压缩tar.gzip文件的正确方法,但是我能找到的最多是zip或gzip(单独)。 问题答案: 我最喜欢的是plexus-archiver-请参阅GitHub上的资源。 另一个选项是Apache commons- compress- (请参阅mvnrepository)。 使用plexus-utils,用于取消存档的代码如下所示:

    • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

    • 问题内容: 我想使用Java代码将文件压缩为zip,rar和7z格式。我也想在指定位置解压缩这些文件。谁能告诉我如何在Java中使用7-zip压缩和解压缩文件? 问题答案: 我用过:sevenzipjbinding.jar sevenzipjbinding-Allplatforms.jar 我现在可以使用这些jar解压缩文件。 尝试使用此链接进行解压缩:http : //sourceforge.n

    • 问题内容: 使用python 2.4和内置库,我无法读取非常大的zip文件(大于1或2 GB),因为它想将未压缩文件的全部内容存储在内存中。还有另一种方法(使用第三方库或其他黑客工具),还是必须“脱壳”并以这种方式解压缩(显然,它不是跨平台的)。 问题答案: 这是对大文件进行解压缩的概述。

    • 本文向大家介绍Android如何实现压缩和解压缩文件,包括了Android如何实现压缩和解压缩文件的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家贴java代码了,具体代码如下所示: Java代码 代码到此结束,关于Android实现压缩和解压缩文件的全内容就给大家介绍这么多,希望能够帮助到大家!

    • 常用压缩包—解压—令整理 Linux 后缀为 .war 格式的文件(一般用在部署 Tomcat 项目的时候) 命令:unzip -oq XXXXXX.war -d ROOT 如果没有 ROOT 目录会自动创建 ROOT 目录。 Linux 后缀为 .tar.gz 格式的文件-解压 命令:tar zxvf XXXXXX.tar.gz Linux 后缀为 .bz2 格式的文件-解压 命令:bzip2