我正在尝试从嵌套的 zip 存档中提取文件并在内存中处理它们。
这个问题不是关于什么的:
如何在Java中读取zip文件:不,问题是如何读取zip文件中的zip文件,等等(如嵌套zip文件)。
将临时结果写入磁盘:不,我问的是在内存中完成这一切。我使用将结果临时写入磁盘的不太有效的技术找到了许多答案,但这不是我想要做的。
例子:
Zip 文件 -> Zipfile1 -> Zipfile2 -> Zipfile3
目标:提取每个嵌套 zip 文件中找到的数据,所有数据都在内存中并使用 Java。
你说ZipFile就是答案?不,不是,它适用于第一次迭代,即:
Zip 文件 -> Zipfile1
但是一旦你到达 Zipfile2,并执行:
ZipInputStream z = new ZipInputStream(zipFile.getInputStream( zipEntry) ) ;
Run Code Online (Sandbox Code Playgroud)
你会得到一个 NullPointerException。
我的代码:
public class ZipHandler {
String findings = new String();
ZipFile zipFile = null;
public void init(String fileName) throws AppException{
try {
//read file into stream
zipFile = new ZipFile(fileName);
Enumeration<?> enu = zipFile.entries();
exctractInfoFromZip(enu);
zipFile.close();
} catch (FileNotFoundException e) { …Run Code Online (Sandbox Code Playgroud)