可供选择的JAVA WAR/ZIP/JAR读取器/操纵器库



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

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

是否有一些java.util.zip的替代方案可以让解析/读取大战变得不那么麻烦,比如在ZipFile/ZipEntry->JarFile/JarEntry之间切换?可以像对待目录一样处理war归档中的zip/war/jar和jar文件的东西?或者必须制定自己的解决方案?

谢谢你,

我将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%sn", "", entry.getName());
            if(entry.getName().endsWith(".zip") || entry.getName().endsWith(".jar"))
                listZipEntries(indent+3, zip);
        }
    }
}

它转储zip档案中的文件名。若遇到名称以.zip.jar结尾的文件,它会进入内部并递归地转储它。对我来说,它看起来很简单,不需要第三方代码。

相关内容

  • 没有找到相关文章

最新更新