【发布时间】:2021-09-28 21:34:31
【问题描述】:
我有以下情况:
我收到一个以字节数组形式通过网络发送的 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,该 InputStream 恰好代表 ZipEntry 在那个时候代表的一个文件?我考虑过只返回 zipInputStream,但由于我不确切知道它是如何工作的,我担心这样做还会包括在该文件返回之后仍在流中的所有文件。
【问题讨论】:
标签: java zip inputstream