java - Android解压功能不起作用

标签 java android xml zip unzip

以下解压缩功能并不适用于所有 zip 文件。

我的zip文件模式如下-

  1. Zip 文件包含一个 xml 文件和一个文件夹(名称 - “images”)。
  2. xml 文件的名称与 zip 文件名相同。
  3. 文件夹(“images”)可能包含也可能不包含任何文件。

在将 xml 文件放入 zip 文件之前,我已对其进行了验证。

对于某些 zip 文件,它会在该行引发异常 -

FileOutputStream fout = new ileOutputStream(path.substring(0,path.length()-4)+"/"+filename);

功能是:

public boolean unZip(String path)
{       
    InputStream is;
    ZipInputStream zis;
    try 
    {
        String filename;
        is = new FileInputStream(path);
        zis = new ZipInputStream(new BufferedInputStream(is));   
        ZipEntry ze;
        byte[] buffer = new byte[1024];
        int count;

        while ((ze = zis.getNextEntry()) != null) 
        {
            filename = ze.getName();
            if (ze.isDirectory()) {
                File fmd = new File(path.substring(0,path.length()-4)+"/"+filename);
                fmd.mkdirs();
                continue;
            }

            FileOutputStream fout = new FileOutputStream(path.substring(0,path.length()-4)+"/"+filename);

            while ((count = zis.read(buffer)) != -1) 
            {
                fout.write(buffer, 0, count);             
            }

            fout.close();               
            zis.closeEntry();
        }

        zis.close();
    } 
    catch(IOException e)
    {
        e.printStackTrace();
        return false;
    }

    return true;
}

Exception at Logcat view

最佳答案

这个方法效果很好。这是在 Linux 平台中创建 zip 时的权限问题。但是当我更改文件权限时,功能开始正常工作。

关于java - Android解压功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24360476/

相关文章:

android - Titanium Android 模块升级到 SDK 6.0.0

java - 如何使用 JAXB 将具有不同元素名称的列表序列化为一个列表?

xml - node-soap 中是否有模式验证?

java - 无法将产品插入 ms access 数据库

java - 在java中,从另一个数字字符串中减去1个数字字符串的最佳方法是什么

java - Java获取当前月份的天数

android - Kotlin 函数 : Required Unit? 找到 Int

java - 如何从数组资源填充数据库?

java - 具有重写方法的 NullPointerException

java - 如何获取发送 Intent 的布局的可读 ID?