【问题标题】:get inputStream from zipFile then add to another zipFile getting null pointer exception从 zipFile 获取 inputStream 然后添加到另一个 zipFile 获取空指针异常
【发布时间】:2014-12-14 06:46:22
【问题描述】:

我正在尝试从 zip 文件中获取输入流,然后将其添加到另一个 zip 文件中,但它会引发空指针异常。 这是我的代码。

       ZipParameters parameters = new ZipParameters();
       ZipFile newZipFile = new ZipFile(new File(CacheDir, "temp.card"));
       File temp = new File(CacheDir, "tempFile");
        if (!temp.exists()) {
                temp.createNewFile();
        }
       newZipFile.createZipFile(temp, parameters);
       if(newZipFile.getFile().exist()){
       if (string != null) {
            inputStream = zipFile.getInputStream(zipFile.getFileHeader(string));
       }
       if (inputStream != null) {
            newZipFile.addStream(inputStream,parameters);
       }
       }

此范围内的所有对象都不是 null。 但我在这里遇到异常:

newZipFile.addStream(inputStream,parameters);

日志:

12-14 06:27:43.891: W/System.err(2197): net.lingala.zip4j.exception.ZipException: input file is null
12-14 06:27:43.891: W/System.err(2197):     at net.lingala.zip4j.io.CipherOutputStream.putNextEntry(CipherOutputStream.java:71)
12-14 06:27:43.895: W/System.err(2197):     at net.lingala.zip4j.io.DeflaterOutputStream.putNextEntry(DeflaterOutputStream.java:45)
12-14 06:27:43.895: W/System.err(2197):     at net.lingala.zip4j.zip.ZipEngine.addStreamToZip(ZipEngine.java:230)
12-14 06:27:43.895: W/System.err(2197):     at net.lingala.zip4j.core.ZipFile.addStream(ZipFile.java:395)

【问题讨论】:

  • 如果违规行是newZipFile.addStream(inputStream,parameters);,那么我们应该能够假设newZipFileinputStreamparamaters 为空。我在你的 sn-p 中看到了 inputStream 的初始化;但是我没有看到其他变量的初始化。请发布更多代码,否则这是我们可以做出的唯一假设。

标签: java android zip4j


【解决方案1】:

追踪该异常的来源,我在 zip4j 的源代码中发现

if (!zipParameters.isSourceExternalStream() && file == null) {
    throw new ZipException("input file is null");
}

所以快速解决方法是绕过检查

parameters.setSourceExternalStream(true);

P.S.:我不知道externalStream 是什么意思,但它有效?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 2013-06-28
    • 2020-08-12
    相关资源
    最近更新 更多