当前位置: 首页 > 面试题库 >

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

王才英
2023-03-14
问题内容

我查看了JDK和Apache压缩库随附的默认Zip库,由于以下三个原因,我对它们不满意:

  1. 它们太臃肿了,API设计也不好。我必须写50行锅炉板字节数组输出,压缩输入,文件输出流和关闭相关流,捕捉异常和移动字节缓冲区自己?为什么我不能有一个像zippers.unzip(InputStream zip File,File targetDirectory,String password=null)和zippers.zip(File targetDirectory,String password=null)这样的简单API呢?
  2. 似乎通过压缩解压缩会破坏文件元数据,并且密码处理会被破坏。
  3. 另外,与我从UNIX获得的命令行zip工具相比,我尝试的所有库的速度都慢了2-3倍?

对我来说(2)和(3)是次要点,但我确实想要一个具有单行界面的经过良好测试的库。


问题答案:

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

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>


 类似资料:
  • 问题内容: 我需要压缩部分应用程序网络流量以提高性能。我认为这意味着我需要远离一些较新的算法,例如bzip2,我认为我听说它的速度较慢。 问题答案: 您可以使用JDK中内置的Deflater / Inflater。也有GZIPInputStream和GZIPOutputStream,但这实际上取决于您的确切使用。 编辑: 阅读更多评论,看起来网络流量是HTTP。根据服务器的不同,它可能支持压缩(尤

  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

  • 问题内容: 我想使用Java代码将文件压缩为zip,rar和7z格式。我也想在指定位置解压缩这些文件。谁能告诉我如何在Java中使用7-zip压缩和解压缩文件? 问题答案: 我用过:sevenzipjbinding.jar sevenzipjbinding-Allplatforms.jar 我现在可以使用这些jar解压缩文件。 尝试使用此链接进行解压缩:http : //sourceforge.n

  • 问题内容: 我知道这是一项容易的任务,但是更改代码后它停止工作,并且无法恢复!我实际上使用了两个函数来进行压缩和解压缩,尽管实际上它是“ jar”和“ unjar”,但这并没有太大的区别 任何帮助/建议吗? 创建JarFile时发生错误: 问题答案: 我不知道这是否是您的问题,但是通常最好在完成写入后关闭每个zip条目。 请参阅。 在显示的代码中,不会关闭邮政编码中的最后一个条目。您也不会显示关闭

  • 常用压缩包—解压—令整理 Linux 后缀为 .war 格式的文件(一般用在部署 Tomcat 项目的时候) 命令:unzip -oq XXXXXX.war -d ROOT 如果没有 ROOT 目录会自动创建 ROOT 目录。 Linux 后缀为 .tar.gz 格式的文件-解压 命令:tar zxvf XXXXXX.tar.gz Linux 后缀为 .bz2 格式的文件-解压 命令:bzip2

  • tar [-]c|x|u|r|t[z|j][v] -f 归档文件 [待打包文件] 将多个文件打包为一个归档文件,可以在打包的同时进行压缩。支持的格式为 tar(归档)、gz(压缩)、bz2(压缩率更高,比较耗时) 操作选项 -c 创建 -x 解包 -u 更新 -r 添加 -t 查看 -d 比较压缩包内文件和文件 -A 将 tar 文件添加到归档文件中 格式选项 -z 使用 gz 压缩格式 -j 使