2013-11-27 26 views
0

我想解壓密碼保護zip文件使用zip4j庫爲Android。但它提供了不受支持的壓縮類型異常。我搜查了很多,但找不到任何理由或解決方案。zip4j不支持壓縮類型例外:Android

所以我的問題是:

  1. 爲什麼我得到這個例外?
  2. 如何解決這個問題?我應該使用任何其他庫嗎?

    try { 
         File src = new File("/sdcard/" + filename); 
    
         ZipFile zipFile = new ZipFile(src); 
    
         if (zipFile.isEncrypted()) { 
    
          zipFile.setPassword("mypassword"); 
    
         } 
    
         File destFile=new File ("/sdcard/tests_images_Xdata"); 
    
         if(!destFile.isDirectory()){ 
    
          destFile.mkdir();    
          String dest = new String("/sdcard/tests_images_Xdata"); 
          zipFile.extractAll(dest); 
    
          } 
    } 
          catch (ZipException e) { 
          e.printStackTrace(); 
    
        } 
    

回答

0

首先,我認爲存在着在你的代碼中的一些錯誤,

if(!destFile.isDirectory()){ 

當destFile是一個文件,而第二個則必須使用後綴設置你的壓縮文件是唯一真正「 zip「,這意味着你的變量文件名必須包含」.zip「。

+0

感謝您的回覆,但我首先創建一個目標目錄在SD卡中名稱爲「tests_images_Xdata」,然後提取該目錄中的所有文件。相同的代碼適用於一些壓縮文件。 – Amit

0

Zip4j支持Store(不壓縮)或Deflate壓縮算法。最有可能的是,使用Zip4j不支持的其他一些壓縮算法壓縮出現此問題的zip文件。

要查看壓縮文件中壓縮文件的壓縮類型,請在7-Zip中打開壓縮文件 - >右鍵單擊文件 - >屬性。包含「方法」的字段顯示您使用的壓縮類型。

要使用zip文件與zip4j,你必須確保它使用或者放氣或壓縮存儲(無壓縮)

enter image description here

+0

非常感謝你,這真的是有用的信息。有什麼辦法可以解壓這些文件嗎? – Amit

+0

取決於壓縮方法,以及是否有任何庫在Java中處理此壓縮方法。你看到這個壓縮文件的壓縮方法是什麼? – SrikanthLingala