【问题标题】:zip4j Compression type not supported Exception: Android不支持 zip4j 压缩类型异常:Android
【发布时间】:2013-11-27 09:31:09
【问题描述】:

我正在尝试使用适用于 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();   
    
         }
    

【问题讨论】:

    标签: android zip4j


    【解决方案1】:

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

    if(!destFile.isDirectory()){ 
    

    只有当destFile是一个文件时才成立,其次你必须将你的压缩文件设置为后缀“zip”,也就是说你的变量文件名必须包含“.zip”。

    【讨论】:

    • 感谢您的回复,但我首先在 sdcard 中创建一个名为“tests_images_Xdata”的目标目录,然后提取该目录中的所有文件。相同的代码适用于某些压缩文件。
    【解决方案2】:

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

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

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

    【讨论】:

    • 非常感谢,这是非常有用的信息。有没有办法解压这类文件?
    • 取决于压缩方法以及Java中是否有任何库可以处理这种压缩方法。您看到此 zip 文件的压缩方法是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多