[英]is it possible to get a zipentry's inputstream from a zipinputstream?
[英]How to get an InputStream representing one file in a ZipInputStream
我有以下情况:
我正在以字节数组的形式通过网络发送一个 Zip 文件。 我不想将该文件保存在本地,而是将该文件中的单个文件作为目标,并将其作为 InputStream 导入到我的解决方案中。
到目前为止,我已经能够识别出正确的 ZipEntry。 但是,从这里开始,所有 Zip 教程都通过按文件名读取条目来继续,这在我的情况下自然不起作用,因为本地不存在 zip 文件。
private void InputStream getReqifInputStreamFrom(byte[] reqifzFileBytes){
ByteArrayInputStream inputStream = new ByteArrayInputStream(reqifzFileBytes);
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
ZipEntry zipEntry = zipInputStream.getNextEntry();
while (zipEntry != null) {
String fileName = zipEntry.getName();
if (fileName.endsWith(REQIF_FILE_SUFFIX)) {
return ???;
}
zipEntry = zipInputStream.getNextEntry();
}
}
那么,此时我该怎么做才能返回一个 InputStream 来准确地表示 ZipEntry 在该点表示的一个文件? 我已经考虑过只返回 zipInputStream,但是由于我不知道它是如何工作的,我担心这样做也会包括在要返回的文件之后仍在流中的所有文件。
你几乎就在那里。 尝试
private InputStream getReqifInputStreamFrom(byte[] reqifzFileBytes) throws IOException {
InputStream result = null;
ByteArrayInputStream inputStream = new ByteArrayInputStream(reqifzFileBytes);
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
ZipEntry zipEntry = zipInputStream.getNextEntry();
while (zipEntry != null) {
String fileName = zipEntry.getName();
if (fileName.endsWith(REQIF_FILE_SUFFIX)) {
result = zipInputStream;
break;
}
zipEntry = zipInputStream.getNextEntry();
}
return result;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.