0

我正在尝试使用适用于 android 的 zip4j 库解压缩受密码保护的 zip 文件。但它给出了不支持的压缩类型异常。我进行了很多搜索,但找不到任何原因或解决方案。

所以我的问题是:

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

2 回答 2

0

Zip4j 支持 Store(无压缩)或 Deflate 压缩算法。最有可能的是,您遇到此问题的 zip 文件是使用 Zip4j 不支持的其他压缩算法压缩的。

要查看 zip 文件中文件的压缩类型,请在 7-Zip 中打开 zip 文件 -> 右键单击​​文件 -> 属性。包含“方法”的字段显示您使用的压缩类型。

要将 zip 文件与 zip4j 一起使用,您必须确保使用 deflate 或 Store 对其进行压缩(无压缩)

在此处输入图像描述

于 2013-11-27T11:48:17.720 回答
0

首先,我认为您的代码中存在一些错误,

if(!destFile.isDirectory()){ 

仅当 destFile 是文件时才成立,其次您必须将压缩文件设置为后缀“zip”,即您的变量文件名必须包含“.zip”。

于 2013-11-27T11:02:04.847 回答