在Java中你必须做 new ZipFile(new File("xxx.zip")); 解压缩 zip 文件。
现在我得到一个字节数组,其内容是一个 zip 文件。我从数据库而不是文件中获取这个字节数组。我想解压缩这个“字节数组文件”,但没有字节数组或字符串的 ZipFile 构造函数(我的意思是内容而不是文件路径)。
有什么解决办法吗?(当然我不想将此字节数组写入实际文件并再次将其读入内存。)
谢谢!
在从字节数组创建的 ZipInputStream 中使用 ByteArrayInputStream
byte[] ba;
InputStream is = new ByteArrayInputStream(ba);
InputStream zis = new ZipInputStream(is);
使用 zis 读取未压缩的内容
的实现ZipFile
要求它是一个文件。例如,可以使用内存映射。一般来说,假设存档可能很大。
正如@Perception 提到的,ZipInputStream
可用于通过流顺序读取。可以使用第三方库来替换ZipFile
.