我见过很多Java教程,解释了如何将zip文件解压缩到磁盘。但我想知道是否有可能将文件提取到内存中。
例如,我将读取多个zip文件,每个文件都包含一个包含一些信息的JSON文件。我想传入每个zip文件并从JSON文件中提取信息。
现在,根据我目前所知,我需要将JSON文件解压缩到磁盘,从磁盘读取JSON文件,删除JSON文件,然后重复下一个zip文件。
有没有办法将zip条目提取到内存对象中,并从内存中读取JSON文件。
实际上我需要的是一个文件句柄,指向从zip存档中提取的内存文件。
答案 0 :(得分:2)
不需要在任何地方提取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);