Java 从zipFile获取inputStream,然后添加到另一个zipFile获取空指针异常
我试图从zip文件中获取输入流,然后将其添加到另一个zip文件中,但它引发空指针异常。 这是我的密码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
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);