java将zip文件打开到内存中

标签 java memory zip

我看过很多 Java 教程,解释如何将 zip 文件解压缩到磁盘。但我想知道是否可以将文件提取到内存中。

例如,我将有多个 zip 文件要读取,每个文件都包含一个包含一些信息的 JSON 文件。我想传入每个 zip 文件并从 JSON 文件中提取信息。

现在,根据我目前所知,我需要将 JSON 文件提取到磁盘,从磁盘读取 JSON 文件,删除 JSON 文件,然后重复处理下一个 zip 文件。

有没有办法将 zip 条目提取到内存对象中,并从内存中读取 JSON 文件。

事实上,我需要的是一个指向从 zip 存档中提取的内存中文件的文件句柄。

最佳答案

Zip 文件不需要解压到任何地方。您可以直接从存档中阅读。尝试类似的方法(一切都是纯 Java,不需要外部库):

    ZipFile zipFile = new ZipFile("archive.zip");
    ZipEntry entry = zipFile.getEntry("file.json");
    InputStream is = zipFile.getInputStream(entry);
    byte[] data = new byte[is.available()];
    is.read(data);
    String json = new String(data);

关于java将zip文件打开到内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33320064/

相关文章:

java - 关于模块和返回语句的问题

java - 来自 ojdbc5 和 ojdbc 的时间戳问题

java - JPA 的 commit() 方法是否使实体分离?

java - 是否可以自动序列化知道 .class 文件的对象

java - 如何使用 "Zip File System Provider"在 Java 中遍历 ZIP 文件?

android - 将 Zip 提取到 SD 卡非常慢。我如何优化性能?

c++ - 在缓存 C++ 中查找命中/未命中

linux - 如何找出 Linux 中哪些进程正在使用交换空间?

r - 如何让Shiny在 session 结束后恢复内存?

java - 在 Java 中解压缩文件时出现 ZipException