**已关闭。**此问题正在寻求书籍、工具、软件库等的建议。它不符合Stack Overflow guidelines。目前不接受答复。
我们不允许问题寻求书籍,工具,软件库等的建议。您可以编辑问题,以便可以用事实和引用来回答。
7年前关闭。
Improve this question
我查看了JDK和Apache压缩库附带的默认Zip库,我对它们不满意,原因有三:
1.它们臃肿,API设计糟糕。我必须write 50 lines of boiler plate byte array output, zip input, file out streams and close relevant streams and catch exceptions and move byte buffers on my own?为什么我不能有一个简单的API,看起来像这样的Zipper.unzip(InputStream zipFile, File targetDirectory, String password = null)
和Zipper.zip(File targetDirectory, String password = null)
只是工作?
1.似乎压缩解压缩破坏文件元数据和密码处理是打破。
1.此外,我尝试的所有库与我在UNIX中获得的命令行zip工具相比都慢2- 3倍。
对我来说,(2)和(3)是次要的,但我真的想要一个好的测试库,一行接口。
9条答案
按热度按时间2j4z5cfb1#
我知道它的晚,有很多答案,但这个zip4j是最好的压缩库之一,我用过。它的简单(没有锅炉代码),可以很容易地处理密码保护的文件。
Maven依赖项是:
nsc4cvqm2#
在Java 8中,使用Apache Commons-IO的
IOUtils
可以做到:它仍然是一些样板代码,但它只有一个非外来依赖:Commons-IO
在Java 11和更高版本中,可能会有更好的选择,请参阅ZhekaKozlov的评论。
x7rlezfr3#
解压缩zip文件及其所有子文件夹,仅使用JDK:
Zip文件及其所有子文件夹:
00jrzges4#
另一个可以查看的选项是zt-zip,可从Maven中心和项目页面https://github.com/zeroturnaround/zt-zip获得
它具有标准的打包和解包功能(在流和文件系统上)+许多帮助器方法来测试归档中的文件或添加/删除条目。
20jt8wwn5#
zip4j文件夹/文件压缩/解压缩完整实现
将this dependency添加到构建管理器。或者,从here和add it下载最新的JAR文件到您的项目构建路径。
class
波纹管可以压缩和提取任何文件或文件夹有或没有密码保护-更详细的用法请看这里。
aamkag616#
一个非常好的项目是TrueZip。
TrueZIP是一个基于Java的虚拟文件系统(VFS)插件框架,它提供了对归档文件的透明访问,就像它们只是普通目录一样
例如(从website):
js5cn81o7#
另一个选项是JZlib。根据我的经验,它不像zip4J那样“以文件为中心”,所以如果您需要处理内存中的blob而不是文件,您可能想看看它。
4bbkushb8#
这里有一个递归压缩和解压缩文件的完整示例:http://developer-tips.hubpages.com/hub/Zipping-and-Unzipping-Nested-Directories-in-Java-using-Apache-Commons-Compress
yfjy0ee79#
你看过http://commons.apache.org/vfs/吗?它声称为您简化了很多事情。但我从来没有在项目中使用过。
我也不知道除了JDK或Apache压缩之外的Java原生压缩库。
我记得有一次我们从ApacheAnt中删除了一些功能--它们内置了很多压缩/解压缩的实用程序。
使用VFS的示例代码如下所示: