4

在Java中你必须做 new ZipFile(new File("xxx.zip")); 解压缩 zip 文件。

现在我得到一个字节数组,其内容是一个 zip 文件。我从数据库而不是文件中获取这个字节数组。我想解压缩这个“字节数组文件”,但没有字节数组或字符串的 ZipFile 构造函数(我的意思是内容而不是文件路径)。

有什么解决办法吗?(当然我不想将此字节数组写入实际文件并再次将其读入内存。)

谢谢!

4

2 回答 2

6

在从字节数组创建的 ZipInputStream 中使用 ByteArrayInputStream

byte[] ba;

InputStream is = new ByteArrayInputStream(ba);
InputStream zis = new ZipInputStream(is);

使用 zis 读取未压缩的内容

于 2012-12-28T16:40:35.737 回答
0

的实现ZipFile要求它是一个文件。例如,可以使用内存映射。一般来说,假设存档可能很大。

正如@Perception 提到的,ZipInputStream可用于通过流顺序读取。可以使用第三方库来替换ZipFile.

于 2012-12-28T16:38:51.067 回答