【问题标题】:Any way to get Compression method in java using zip4j library?有什么方法可以使用 zip4j 库在 java 中获取压缩方法?
【发布时间】:2015-02-10 06:29:50
【问题描述】:

我想返回布尔值来检查我的 zip 文件是否被压缩。如果我还可以获得使用的压缩方法,那将是一个优势。现在我只是检查它是否已加密并且是有效的 zip。如果可以使用 zip4j 库,请提供帮助。

public static boolean isPackageCompressed(String path) throws ZipException{
    boolean isPackageCompressed = false;

    ZipFile zipFile = new ZipFile(path);

    System.out.println(zipFile.isEncrypted());       
    System.out.println(zipFile.isValidZipFile());        

    // TODO. There is no method like zipFile.getCompressionMethod() . 

    return isPackageCompressed; 
}

public static void main(String[] args) {
    try {
        isPackageCompressed("D:\\some.ZIP");
    } catch (ZipException e) {
        e.printStackTrace();
    }
}

【问题讨论】:

  • 我不熟悉 zip4j,但熟悉 ZIP 格式。在 ZIP 中,压缩方法是每个条目的属性,在单个存档中混合压缩方法是完全有效的,您会经常遇到 STORED(根本不压缩)和 DEFLATEd 条目的混合。您可能需要遍历这些条目并查看它们是否被压缩。
  • @Stefan Bodewig:你能帮忙分享一些代码吗?
  • 使用 Apache Commons Compress,我可以。 :-) 就像我说的,我不熟悉 zip4j。
  • @Stefan Bodewig :我在 Apache Commons 中也找不到任何方法。 commons.apache.org/proper/commons-compress/apidocs/org/apache/…
  • @Stefan Bodewig :我从java-examples.com/get-compression-method-zip-entry-example 得到它,谢谢你的想法。 :)

标签: java compression zip4j


【解决方案1】:

检查一下可能会有所帮助(不是完整的答案)

ZipParameters zp = new ZipParameters();
zp.setFileNameInZip("sample.zip");
System.out.println(zp.getCompressionMethod());
System.out.println(Zip4jConstants.COMP_DEFLATE);

OutPut:
8
8

【讨论】:

  • 谢谢 但是我对打开 Zip 没有任何要求;只是我想检查一下zip文件是用什么压缩方法压缩的。
  • 谢谢 :) 仅供其他人参考: 压缩方法: 0 - 文件被存储(不压缩) 1 - 文件被缩小 2 - 文件被压缩,压缩因子为 1 3 - 文件压缩因子为 2 4 - 文件压缩因子为 3 5 - 文件压缩因子为 4 6 - 文件内爆 7 - 保留用于标记压缩算法 8 - 文件已压缩
猜你喜欢
  • 2016-02-04
  • 1970-01-01
  • 2011-10-19
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多