我正在尝试从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)
答案 0 :(得分:3)
跟踪该异常的起源,我在zip4j的源代码中找到了
if (!zipParameters.isSourceExternalStream() && file == null) {
throw new ZipException("input file is null");
}
因此,快速解决方法是绕过该检查
parameters.setSourceExternalStream(true);
P.S。:我不知道externalStream
意味着什么,但它有效