什么是好的Java库来压缩/解压缩文件?

问题:

我查看了JDK和Apache压缩库附带的默认Zip库,我对此不满意,原因有三:

  1. 他们blo肿,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)只是工作?
  2. 看起来如何解压缩破坏文件元数据和密码处理是破碎的。
  3. 此外,与UNIX使用的命令行zip工具相比,我尝试的所有库都慢了2-3倍?

对我来说(2)和(3)是小点,但我真的想要一个良好的测试库与一行接口。

回答:

我知道它的晚了,有很多答案,但这个zip4j是我使用过的最好的压缩库之一。它的简单(没有锅炉代码),可以轻松处理密码保护的文件。

import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.core.ZipFile;


public static void unzip(){
    String source = "some/compressed/file.zip";
    String destination = "some/destination/folder";
    String password = "password";

    try {
         ZipFile zipFile = new ZipFile(source);
         if (zipFile.isEncrypted()) {
            zipFile.setPassword(password);
         }
         zipFile.extractAll(destination);
    } catch (ZipException e) {
        e.printStackTrace();
    }
}

Maven依赖是:

<dependency>
    <groupId>net.lingala.zip4j</groupId>
    <artifactId>zip4j</artifactId>
    <version>1.3.2</version>
</dependency>

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What is a good Java library to zip/unzip files?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

86 + = 95