我正在尝试使用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文件来获取内部war文件的输入流
是否可以读取内部zipentry作为输入流??
Java 7 nio2包有一个新的文件系统接口和一个新的Zip文件系统提供程序。接口和提供程序允许以访问者模式风格遍历zip树。这应该提供一种更清晰、更有效的方法来访问内部zip文件
。编辑:我试图遍历一个zip-inside-zip并得到一个异常。根据这个线程,您必须提取内部zip以便遍历它。