我想省略创建File
。我的DataHandler
对象包含zip文件,其中包含一个条目。我需要正确InputStream
才能阅读压缩内容。
实际上,我的“流程”如下:DataHandler - >档案 - > ZipFile - >第一个ZipEntry.getInputStream()。
有没有办法不创建File/ZipFile
对象?
答案 0 :(得分: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中读取扩展内容。
答案 1 :(得分:0)
您可能正在寻找ZipInputStream
答案 2 :(得分:0)
解决方案是:
DataHandler dh = ...
ZipInputStream zis = new ZipInputStream(dh.getInputStream());
ZipEntry entry = zis.getNextEntry();
...之后zis
当前设置为第一个zip条目的开头。
感谢@aetheria& @Janoz ZipInputStream
暗示。