2015-02-10 27 views
1

我想返回布爾值來檢查我的zip文件是否被壓縮。如果我也可以得到壓縮方法已被使用,那將是一個優點。現在我只是檢查它是加密的,並且是有效的zip。如果可以使用zip4j庫,請幫助。任何方式來獲得使用zip4j庫在java中的壓縮方法?

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(); 
    } 
} 
+1

我不熟悉zip4j,但與ZIP格式。在ZIP中,壓縮方法是每個條目的屬性,在單個存檔中混合使用壓縮方法是完全有效的,並且您會經常遇到STORED(根本不壓縮)和DEFLATEd條目的混合。您可能需要遍歷這些條目並查看它們是否被壓縮。 – 2015-02-10 09:29:55

+0

@Stefan Bodewig:您可以通過分享一些代碼來獲得幫助嗎? – 2015-02-10 11:40:11

+1

使用Apache Commons Compress,我可以。 :-)就像我說的,我不熟悉zip4j。 – 2015-02-10 11:42:57

回答

1

檢查了這一點可能會有所幫助(不是完整的答案)

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

OutPut: 
8 
8 
+0

謝謝但我沒有任何要求打開Zip;只是我想檢查什麼壓縮方法壓縮文件。 – 2015-02-10 08:15:42

+0

謝謝:) 僅供參考他人: 壓縮方式: 0 - 該文件存儲(沒有壓縮) 1 - 文件收縮 2 - 文件被減小與壓縮因子1 3 - 該文件是壓縮因子減少2 4 - 文件壓縮因子3減少 5 - 文件壓縮因子4減少 6 - 文件內部破裂 7 - 爲Tokenizing壓縮算法保留 8 - 文件被壓縮 – 2015-02-10 14:54:02

相關問題