繁体   English   中英

递归读取ZipFile而不提取(Java)

[英]Recursive read ZipFile without extracting (Java)

有一个小问题。 我有一个结构未知的ZipFile。 我必须在控制台上打印所有文件条目。 主要问题是该主ZipFile可能包含“子” ZipFile,而这些子ZipFile可能包含自己的ZipFile,依此类推。 我只需要查看所有文件条目,但是现在将它们解压缩即可。 我尝试使用ZipFile和ZipInputStream,但未成功。 有人可以帮我吗?

public void showTree(ZipFile file) {
    try {
        ZipEntry entry;
        Enumeration<? extends ZipEntry> entries= file.entries();
        while ((entry = entries.nextElement()) != null) {
            if (entry.getName().matches(".+(zip)$")) { 
                ZipFile z = new ZipFile(entry.getName()); //DOES NOT WORK!!!!!!
                showTree(z);
            }
            System.out.println(entry.getName());
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

这是我的代码,我被束缚从entry.getName()创建ZipFile(显然不能正常工作),但是没有成功。 问题是-如何从内部ZipFile获取条目?

您需要为进入的每个层检查“有孩子”,如果为true,则需要更深入地学习。 一旦不再有孩子,您就会阅读内容并寻找同级。 如果有兄弟姐妹-那么:走进他们。 否则,您的递归方法将在那里结束,并跳到递归方法的上层调用。

zipFile.recursiveMethod()或recursiveMethod(zipFile)会启动逻辑。 喜欢:

recursiveMethod(params)
{
     if(hasChild)
     {
         child.recursiveMethod();
     }
     // in deepest childObject
     readContent();
     if(hasSibling)
     {
         sibling.recursiveMethod();
     }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM