我想省略创建File
。我的DataHandler
对象包含一个 zip 文件,里面有一个条目。我需要正确InputStream
读取压缩内容。
实际上,我的“流程”如下:DataHandler -> File -> ZipFile -> first ZipEntry.getInputStream()。
有没有办法不创建File/ZipFile
对象?
是的,您可以改用ZipInputStream。
编辑:这取决于您的压缩内容如何存储在DataHandler
.
如果它存储在字节数组中......
byte[] zippedContent = dataHandler.getContent();
InputStream in = new ByteArrayInputStream(zippedContent);
ZipInputStream zipIn = new ZipInputStream(in)
ZipEntry zipEntry = zipIn.getNextEntry();
如果它提供访问InputStream
...
ZipInputStream zipIn = new ZipInputStream(dataHandler.getInputStream());
ZipEntry zipEntry = zipIn.getNextEntry();
现在您可以像读取任何其他 InputStream 一样从 ZipInputStream 读取扩展内容。
解决方案是:
DataHandler dh = ...
ZipInputStream zis = new ZipInputStream(dh.getInputStream());
ZipEntry entry = zis.getNextEntry();
...之后,zis
当前设置在第一个 zip 条目的开头。
感谢@aetheria 和@Janoz 的ZipInputStream
提示。
You are probably looking for ZipInputStream