【发布时间】:2011-07-18 18:07:44
【问题描述】:
我需要从我的 java 程序创建一个 zip 文件。
我需要一个能够创建 zip 文件并在其中存储来自文本和文件的条目的库,最重要的是我需要它能够在其中存储整个目录(具有多个级别的其他目录的目录每个都有一些文件)。
你能给我推荐一个吗?
【问题讨论】:
我需要从我的 java 程序创建一个 zip 文件。
我需要一个能够创建 zip 文件并在其中存储来自文本和文件的条目的库,最重要的是我需要它能够在其中存储整个目录(具有多个级别的其他目录的目录每个都有一些文件)。
你能给我推荐一个吗?
【问题讨论】:
查看 Zip4j - http://www.lingala.net/zip4j/
我今天遇到了这个问题,我拒绝做 JDK 想要我们做的低级废话。希望这个小图书馆能正常工作
【讨论】:
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 有一个很好的例子 - 它需要一些工作来处理单个文件。
【讨论】:
ZipOutputStreams。
在这些领域,通常需要从 Apache(或者,更具体地说:Apache Commons)考虑一些事情。我发现了这个:http://commons.apache.org/compress/zip.html(虽然我没有检查过)。
【讨论】:
您可以查看的另一个选项是 zt-zip,可从 Maven 中心和项目页面https://github.com/zeroturnaround/zt-zip
它具有标准的打包和解包功能(在流和文件系统上)+许多帮助方法来测试存档中的文件或添加/删除条目。
【讨论】:
有一个著名的7zip库的Java绑定,你可以在http://sevenzipjbind.sourceforge.net/查看它
【讨论】:
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。随意编辑!
【讨论】: