我正在读取内存中的嵌套zip文件(包含多个其他zip文件的zip文件),代码如下
try (ZipInputStream zis = new ZipInputStream(inputStream)) {
ZipEntry zipEntry;
while ((zipEntry = zis.getNextEntry()) != null) {
if (zipEntry.getName().endsWith(".zip")) {
ZipInputStream nestedZis = new ZipInputStream(zis);
Pojo myPojo = myPojoReader.readFrom(nestedZis);
}
}
zis.closeEntry();
}
代码运行良好,但由于嵌套流的存在,我(在android中)出现了strictmode冲突错误 nestedZis
未正确关闭。
问题是:
我不能更早地示例化它,因为我必须调用 zis.getNextEntry()
之前,以正确定位外部流
我不能在while循环中关闭它,因为这也会关闭外部zipinputstream
是否有正确处理资源的解决方案?
注意,我并没有明确询问这里描述的链接流。由于上面提到的第一个问题,我无法在try with resources语句中包含嵌套流。
注:我不能使用 ZipFile
因为我只能获取一个inputstream作为我的初始资源,并且不能访问该文件。
暂无答案!
目前还没有任何答案,快来回答吧!