小编R T*_*ter的帖子

如何在不使用临时文件的情况下从Java中的嵌套zip文件中读取数据?

我正在尝试从嵌套的 zip 存档中提取文件并在内存中处理它们。

这个问题不是关于什么的:

  1. 如何在Java中读取zip文件:不,问题是如何读取zip文件中的zip文件,等等(如嵌套zip文件)。

  2. 将临时结果写入磁盘:不,我问的是在内存中完成这一切。我使用将结果临时写入磁盘的不太有效的技术找到了许多答案,但这不是我想要做的。

例子:

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)

java zip zipinputstream

3
推荐指数
1
解决办法
6433
查看次数

标签 统计

java ×1

zip ×1

zipinputstream ×1