Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从zipFile获取inputStream,然后添加到另一个zipFile获取空指针异常_Java_Android_Zip4j - Fatal编程技术网

Java 从zipFile获取inputStream,然后添加到另一个zipFile获取空指针异常

Java 从zipFile获取inputStream,然后添加到另一个zipFile获取空指针异常,java,android,zip4j,Java,Android,Zip4j,我试图从zip文件中获取输入流,然后将其添加到另一个zip文件中,但它引发空指针异常。 这是我的密码 ZipParameters parameters = new ZipParameters(); ZipFile newZipFile = new ZipFile(new File(CacheDir, "temp.card")); File temp = new File(CacheDir, "tempFile"); if (!temp.e

我试图从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);
       }
       }
此作用域中的非空对象数为空。 但我这里有个例外:

newZipFile.addStream(inputStream,parameters);
日志:


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

if (!zipParameters.isSourceExternalStream() && file == null) {
    throw new ZipException("input file is null");
}
因此,快速解决办法是通过

parameters.setSourceExternalStream(true);

注意:我不知道
externalStream
是什么意思,但是如果有问题的行是
newZipFile.addStream(inputStream,parameters),它就起作用了
,那么我们应该能够假设
newZipFile
inputStream
参数
为空。我在您的代码片段中看到了
inputStream
的初始化;但是,我看不到其他变量的初始化。请发布更多代码,否则这是我们唯一能做的假设。
parameters.setSourceExternalStream(true);