2

我想省略创建File。我的DataHandler对象包含一个 zip 文件,里面有一个条目。我需要正确InputStream读取压缩内容。

实际上,我的“流程”如下:DataHandler -> File -> ZipFile -> first ZipEntry.getInputStream()。

有没有办法不创建File/ZipFile对象?

4

3 回答 3

2

是的,您可以改用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 读取扩展内容。

于 2012-11-12T13:21:43.230 回答
0

解决方案是:

DataHandler dh = ... 
ZipInputStream zis = new ZipInputStream(dh.getInputStream());
ZipEntry entry = zis.getNextEntry();

...之后,zis当前设置在第一个 zip 条目的开头。

感谢@aetheria 和@Janoz 的ZipInputStream提示。

于 2012-11-12T14:37:21.013 回答
0

You are probably looking for ZipInputStream

于 2012-11-12T13:25:14.917 回答