0

ZipInputStream を使用して web.xml を変更しようとしています。読み取るファイルは、ear/war ファイル内にある web.xml です。

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 ファイルを指定して、内部 war ファイルの入力ストリームを取得できませんでした

内側の zipentry を入力ストリームとして読み取ることは可能ですか??

4

1 に答える 1

0

Java 7 nio2 パッケージには、新しいファイル システム インターフェイスと新しいZip ファイル システム プロバイダーがあります。インターフェイスとプロバイダーにより、ビジター パターン スタイルで zip ツリーをトラバースできます。これにより、内部の zip ファイルに到達するためのより明確で効率的な方法が提供されます。

編集: zip-inside-zip をトラバースしようとしましたが、例外が発生しました。このスレッドによると、それを横断するには内側のジッパーを抽出する必要があります。

于 2015-05-27T07:36:21.077 に答える