替代JAVA WAR / ZIP / JAR阅读器/操纵器库

时间:2015-05-31 18:23:39

标签: java file jar zip war

我正在努力寻找一些可以浏览some.war文件的替代库。

问题是我需要解析WAR文件,然后按名称和JAR文件中的一些内容查找特定的JAR。然后我必须解析那些内容,例如来自这些jar的pom.xml创建一个单独的maven项目模块,只有某些依赖项和配置从其他资源追加。我发现 java.util.zip 包有点不方便和杂乱。

是否有一些替代 java.util.zip 可以解析/阅读战争而不会出现像ZipFile / ZipEntry - >之间切换这样的麻烦。 JarFile / JarEntry?可以像处理目录那样处理war存档中的zip / war / jar和jar文件的东西?或者必须制定他/她自己的解决方案?

谢谢,

1 个答案:

答案 0 :(得分:1)

我使用ZipInputStream执行类似任务:如果将一个ZipInputStream包装到另一个public class ZipTest { public static void main(String[] args) throws IOException { try(InputStream is = new FileInputStream(args[0])) { listZipEntries(1, is); } } private static void listZipEntries(int indent, InputStream is) throws IOException { ZipInputStream zip = new ZipInputStream(is); while(true) { ZipEntry entry = zip.getNextEntry(); if(entry == null) return; System.out.printf("%"+indent+"s%s\n", "", entry.getName()); if(entry.getName().endsWith(".zip") || entry.getName().endsWith(".jar")) listZipEntries(indent+3, zip); } } } 中,则可以透明地访问另一个存档中的存档,而无需解压缩顶级存档。以下是展示如何使用它的简短示例:

.zip

它会转储zip-archive中的文件名。如果它遇到名称以.jar <!-- home page --> <script type="text/ng-template" id=“home.html"> <ion-view ng-controller=“HomeController" title=“Home page"> <ion-content> <ion-list> <ion-item ng-repeat="message in messages track by $index"> {{message}} </ion-item> <ion-list> </ion-content> </ion-view> </script> 结尾的文件,它会进入并以递归方式转储它。对我来说,它看起来很简单,不需要第三方代码。