2011-03-19 56 views
11

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

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

你能告诉我一个吗?

回答

9

一种做处理Zip文件(即压缩)的硬零件库是内置的到Java SE(java.util.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上有一个很好的例子 - 它需要一点点工作来完成单个文件。

+0

但java.util.zip无法保存整个目录,我需要自己编写它! – RYN 2011-03-19 13:33:14

+0

是真的,你必须遍历目录结构并把东西转储到'ZipOutputStream'中。 – Alnitak 2011-03-19 13:35:24

+0

顺便说一句,那个例子是borked。它有一些主要的编译问题(比如没有正确地遍历目录中的文件)。 – stevebot 2011-04-01 19:26:09

4

在这样的领域,通常需要从Apache(或者更具体的说:Apache Commons)来考虑。我发现这个:http://commons.apache.org/compress/zip.html(我没有检查过它)。

+0

它似乎只会使“更好”的zip文件,它似乎不包括目录遍历或任何实际上将磁盘文件复制到压缩文件中的操作。 – Alnitak 2011-03-19 14:08:13

21

退房Zip4j - http://www.lingala.net/zip4j/

我碰到这个问题今天我拒绝做这样低的水平废话了JDK要我们做。希望这个小图书馆将工作

+2

它甚至可以通过Maven获得:http://mvnrepository.com/artifact/net.lingala.zip4j/zip4j – ripper234 2012-03-29 14:51:06

3

有一个著名的Java库7zip的结合,你可以检查出来的http://sevenzipjbind.sourceforge.net/

+0

7zip与zip不一样 – Alnitak 2012-05-10 17:05:34

+6

从个人经验来看,7zip库的Java绑定能够处理Zip,GZip, RAR和其他格式,用于阅读和写作。 – 2012-06-11 14:35:26

4

,你可以检查出另一种选择是ZT-ZIP从Maven的中央和项目页面在https://github.com/zeroturnaround/zt-zip

它有标准的打包和拆包功能(在流和文件系统)+大量的辅助方法测试档案中的文件或添加/删除条目。

+0

太多的依赖关系......但不错的代码。 – marcolopes 2013-11-01 14:43:35

+0

目前唯一的依赖是org.slf4j.slf4j-api – toomasr 2014-09-03 08:47:59