【发布时间】:2014-09-03 22:15:07
【问题描述】:
我有一个 zip 文件 (x.zip),其中还有另一个 zip 文件 (y.zip)。我需要读取 y.zip 中的文件。如何遍历这两个 zip 文件来读取文件?
我用来迭代 x.zip 以读取 y.zip 的代码如下。
在代码中,“zipX”代表“x.zip”。当遇到“y.zip”时,它满足代码中的“if 条件”。在这里,我需要遍历“zipEntry”并读取其中的文件。
如何做到这一点?
private void getFileAsBytes(String path, String name) throws IOException {
ZipFile zipX = new ZipFile(path);
Enumeration<? extends ZipEntry> entries = zipX.entries();
while (entries.hasMoreElements())
{
ZipEntry zipEntry = entries.nextElement();
if(zipEntry.getName().contains(name) && zipEntry.getName().endsWith(".zip")) {
InputStream is;
is = zipX.getInputStream(zipEntry);
// Need to iterate through zipEntry here and read data from a file inside it.
break;
}
}
zipX.close();
}
【问题讨论】:
-
如何使用递归方法直到结束??
-
将内部
InputStream包裹在ZipInputStream中,并像普通的zip“文件”一样读取... -
@MadProgrammer 如果 Y.zip 里面有另一个 zip 文件怎么办?他需要继续使用 if/else 块..
-
@Vikram 是的......但是他们还有什么其他选择。我会以递归方式编写该方法,这样他们就可以继续调用,直到他们找到烂摊子的底部......
-
我怀疑这是不可能的,除非将内部 zip 重构为“真实”文件。邮政编码需要“随机”寻址 zip 文件。
标签: java file inputstream zip