【问题标题】:Read and Modify content of inner zip file using ZipInputStream使用 ZipInputStream 读取和修改内部 zip 文件的内容
【发布时间】:2015-05-27 07:20:00
【问题描述】:

我正在尝试使用 ZipInputStream 修改 web.xml。要读取的文件是 web.xml,它位于 ear/war 文件中

C:/XX.ear/YY.war/WEB-INF/web.xml

ZipFile zipFile = new ZipFile("C:/XX.ear");
    Enumeration<? extends ZipEntry> entries = zipFile.entries();
    while(entries.hasMoreElements()){
        ZipEntry entry = entries.nextElement();
        if(entry.getName().equalsIgnoreCase("YY.war")){
            ZipInputStream inputStream = new ZipInputStream(zipFile.getInputStream(entry));
            ZipEntry zipEntry;
            while(( zipEntry  = inputStream.getNextEntry())!=null)
            {
                System.out.println(zipEntry.getName());// Prints WEB-INF/web.xml
                if (zipEntry.getName().endsWith(".xml")) {
                    ZipInputStream iStream = new ZipInputStream(zipFile.getInputStream(zipEntry)); 
                      // throws NullPointerException here

                }                   
            }                   
        }                       
    }

new ZipInputStream(zipFile.getInputStream(zipEntry)) 我无法指向内部 zip 文件来获取内部战争文件的输入流

是否可以将内部 zipentry 读取为输入流?

【问题讨论】:

    标签: java file zipfile zipinputstream


    【解决方案1】:

    Java 7 nio2 package 有一个新的文件系统接口和一个新的Zip File System provider。接口和提供程序允许traverse the zip tree in a visitor pattern style 这应该提供更清晰有效的方式来获取内部 zip 文件

    编辑:我尝试遍历 zip-inside-zip 并遇到异常。根据this thread,您必须提取内部拉链才能遍历它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多