【发布时间】: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