首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ZipFile在ZipFile中

ZipFile在ZipFile中
EN

Stack Overflow用户
提问于 2009-10-01 05:52:04
回答 1查看 1.4K关注 0票数 3

我有一个zip文件,其中可以包含任意数量的zip文件(也可以递归地)。我需要对所有这些进行迭代。

现在,我有一个函数,它以zipInputStream和zipFile作为参数。问题是,如果我在另一个zip中得到一个zip,我将再次递归地调用这个函数。因此,我不知道如何为另一个for文件中的for文件创建一个zipfile对象。有人能提出办法吗?你以前见过这个吗。

片段看起来会像这样。

代码语言:javascript
运行
复制
private void checkZIP(ZipInputStream zInpStream, ZipFile zf) {
  try {  
    ZipEntry zipEntry = zInpStream.getNextEntry();
    while (zipEntry != null) {
       String entryName = zipEntry.getName();

       if(entryName.endsWith(".zip"))
          checkZIP(new ZipInputStream(zf.getInputStream(zipEntry)),<NEW ZIPFILE OBJECT FOR THIS ENTRY>);


       //other files parsing apart from zip.

       zInpStream.closeEntry();
       zipEntry = zInpStream.getNextEntry();
    }
    zInpStream.close();
  } catch(Exception ioe) {
    //catching specific exceptions here. But did not want to put al
  } 
}

编辑:,我需要那个zip文件对象,因为。如果遇到一个XML文件,我需要创建一个文档对象。因此,如果我在zipInputStream中传递普通的parse()方法,它会关闭流,并且我无法再次使用它。所以我在DocumentBuilder parse().里面使用了DocumentBuilder parse().

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-01 06:04:24

您不能为归档中的zip文件创建一个ZipFile。但是为什么在你的方法中需要这个论点呢?如果您只需要一个流,只需使用参数zInpStream作为contstructor参数,如下

代码语言:javascript
运行
复制
checkZIP(new ZipInputStream(zInpStream));

调用zInpStream.getNextEntry()之后,zInpStream已经定位在该条目的开头,并且只读取该条目,直到调用getNextEntry()为止。

编辑。看到你的编辑了。似乎,如果你阻止流关闭,它将足够你。只需使用稍微修改过的FilterInputStream,它将zipInputStream中的close()调用委托给closeEntry(),而不是close。

代码语言:javascript
运行
复制
public class ZipGuard extends java.io.FilterInputStream {
    public ZipGuard(ZipInputStream is) {
        super(is);
    }

    @Override
    public void close() throws IOException {
        ((ZipInputStream) in).closeEntry();
    }
}

并在checkZip中创建这个保护程序:

代码语言:javascript
运行
复制
checkZip(new ZipInputStream(new ZipGuard(zInpStream)));
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1502111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档