【问题标题】:java library to work with Zip files [closed]用于处理 Zip 文件的 java 库 [关闭]
【发布时间】:2011-07-18 18:07:44
【问题描述】:

我需要从我的 java 程序创建一个 zip 文件。

我需要一个能够创建 zip 文件并在其中存储来自文本和文件的条目的库,最重要的是我需要它能够在其中存储整个目录(具有多个级别的其他目录的目录每个都有一些文件)。

你能给我推荐一个吗?

【问题讨论】:

    标签: java zip directory


    【解决方案1】:

    查看 Zip4j - http://www.lingala.net/zip4j/

    我今天遇到了这个问题,我拒绝做 JDK 想要我们做的低级废话。希望这个小图书馆能正常工作

    【讨论】:

    【解决方案2】:

    Java SE (java.util.zip) 中内置了一个用于处理 Zip 文件(即压缩)的困难部分的库:

    http://download.oracle.com/javase/1.5.0/docs/api/java/util/zip/package-summary.html

    对于您的更高级别的函数,编写一些函数来递归遍历目录并将文件复制到ZipOutputStream 中并不难 - 可能少于 50 行代码左右.

    http://www.javareference.com/jrexamples/viewexample.jsp?id=108 有一个很好的例子 - 它需要一些工作来处理单个文件。

    【讨论】:

    • 但是java.util.zip不能保存整个目录,需要自己写!
    • 是的,您必须自己遍历目录结构并将内容转储到ZipOutputStreams。
    • 顺便说一句,这个例子很糟糕。它有一些主要的编译问题(例如没有正确迭代目录中的文件)。
    • 这个答案有一个非常好的实现:stackoverflow.com/a/1399432/134898
    【解决方案3】:

    在这些领域,通常需要从 Apache(或者,更具体地说:Apache Commons)考虑一些事情。我发现了这个:http://commons.apache.org/compress/zip.html(虽然我没有检查过)。

    【讨论】:

    • 它似乎只是制作“更好”的 zip 文件,它似乎不包含目录遍历或任何实际从磁盘文件复制到 zip 文件的内容。
    【解决方案4】:

    您可以查看的另一个选项是 zt-zip,可从 Maven 中心和项目页面https://github.com/zeroturnaround/zt-zip

    它具有标准的打包和解包功能(在流和文件系统上)+许多帮助方法来测试存档中的文件或添加/删除条目。

    【讨论】:

    • 依赖项太多...但是代码不错。
    • 目前唯一的依赖是org.slf4j.slf4j-api
    【解决方案5】:

    有一个著名的7zip库的Java绑定,你可以在http://sevenzipjbind.sourceforge.net/查看它

    【讨论】:

    • 根据个人经验,7zip 库的 Java 绑定能够处理 Zip、GZip、RAR 和其他格式,无论是阅读还是写作。
    【解决方案6】:

    easyzip4j

    从 github 下载。

    https://github.com/willwarren/easyzip4j/downloads

    用法

    EasyZip.zip("./folderToZip", "./myZipFile.zip");
    

    EasyZip.zip("./folderToZip", "./myZipFile.zip", 
        new EasyZipParameters().setZipFolderContentsNotFolder(true));
    

    (也包含在自述文件中https://github.com/willwarren/easyzip4j/blob/master/README.md

    这是一个基于 Maven 的项目。
    取决于 commons-io 和 log4j。随意编辑!

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 2012-09-15
      相关资源
      最近更新 更多