gpt4 book ai didi

java - 如何使用 Zip 文件系统设置压缩级别(无)

转载 作者:行者123 更新时间:2023-12-02 09:19:03 24 4
gpt4 key购买 nike

我正在使用Zip File System Provider创建 zip 存档:

URI uri = URI.create("jar:file:/codeSamples/zipfs/zipfstest.zip");
FileSystem fs = FileSystems.newFileSystem(uri, env);

如何将压缩级别设置为无以及默认压缩级别是多少。

我检查了properties (env) 没有针对此的选项。

最佳答案

根据 Java 版本,有不同的可能性。

适用于 Java 版本 >= 7 和 < 12

  • 使用 zipfs,您无法控制压缩级别,因为使用默认值
  • 或者,您可以使用 java.util.zip.ZipOutputStream 来控制每个 ZipEntry 的压缩方法
    一个起点可能是这篇文章 Creating ZIP and JAR Files

Java 版本 >= 12

  • 有一个选项noCompression来控制压缩方法

  • 重要的部分是

     Map<String, String> env = new HashMap<>();
    // to store the files in the ZIP
    env.put("noCompression", "true");

    FileSystem zipfs = FileSystems.newFileSystem(uri, env);

Java >= 14

该选项将从 noCompression 重命名为 compressionMethod(请参阅此 CSR JDK-8231248)。

编辑:基于 @Phil Brown 的评论,我对 Java 11 和“noCompression”选项进行了一些快速研究。

看来提交 196c20c0d1 OpenJDK 源代码中的内容已向后移植到某些 Java 11 版本,但并未移植到所有版本(至少在 Oracle JDK 11 中缺失)。因此,如果您想在 Java 11 版本中使用此选项,您需要检查您的特定供应商 JDK/JRE 是否支持该选项。

关于java - 如何使用 Zip 文件系统设置压缩级别(无),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58816013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com