我需要从我的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 - 需要稍作修改才能处理单个文件。
ZipOutputStream
中。 - Alnitak在这样的领域,通常需要考虑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));
(也在 readme 中涵盖https://github.com/willwarren/easyzip4j/blob/master/README.md)
这是一个基于maven的项目。
依赖于commons-io和log4j。 随意编辑!