使用java库处理Zip文件

使用java库处理Zip文件,java,zip,directory,Java,Zip,Directory,我需要从我的java程序中创建一个zip文件 我需要一个库,能够创建zip文件,并在其中存储来自文本和文件的条目,最重要的是我需要它能够在其中存储整个目录(一个包含多个级别的其他目录的目录,每个目录中都有一些文件) 你能给我推荐一个吗?Java SE(Java.util.Zip)中内置了一个库,用于处理Zip文件的困难部分(即压缩): 对于更高级别的函数来说,编写一些递归遍历目录并将文件复制到ZipOutputStream中的函数并不难——可能不到50行左右的代码 有一个很好的例子,它需要做一

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

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


你能给我推荐一个吗?

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

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


有一个很好的例子,它需要做一些工作来做单个文件。

在这些领域中,通常需要从Apache(或者更具体地说,Apache Calm)考虑。我发现了这个:(虽然我没有检查过)。

看看Zip4j-


我今天遇到了这个问题,我拒绝做JDK想要我们做的低级垃圾。希望这个小库能够工作

有一个著名库的Java绑定,您可以在

easyzip4j上查看它

从github下载它

用法

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

(也包含在自述中)

这是一个基于maven的项目。

取决于commons io和log4j。请随意编辑

您可以查看的另一个选项是zt-zip,可从Maven central和项目页面获取,网址为


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

但是java.util.zip不能保存整个目录,我需要自己编写它!是的,您必须遍历目录结构并将内容转储到
ZipOutputStream
s yourself.btw中,这个例子是错误的。它有一些主要的编译问题(例如没有正确地迭代目录中的文件)。这个答案有一个非常好的实现:它似乎只会生成“更好”的zip文件,它似乎不包括目录遍历或任何实际执行从磁盘文件复制到zip文件的操作。它甚至可以通过Maven获得:根据个人经验,7zip库的Java绑定能够处理zip、GZip、RAR和其他格式的读写。太多的依赖项。。。但是代码不错。目前唯一的依赖项是org.slf4j.slf4j-api
EasyZip.zip("./folderToZip", "./myZipFile.zip", 
    new EasyZipParameters().setZipFolderContentsNotFolder(true));