【问题标题】:How to create an internal JarFile Object from a byte[]如何从 byte[] 创建内部 JarFile 对象
【发布时间】:2017-12-21 16:22:57
【问题描述】:

我想检查我当前正在处理的程序的更新,为此我下载了 JarFile 并将其写入计算机内存。 现在我不知道如何将在此过程中创建的 byte[] “转换”为 一个 JarFile 对象。

那么如何将这个 byte[] 转换成 JarFile 对象呢?所以我可以读取 Jar 中包含版本号的文件?

【问题讨论】:

    标签: java arrays jar byte inputstream


    【解决方案1】:

    不要将文件读入内存。直接阅读版本,使用jar URL

    String version;
    URL versionFile = new URL("http://www.example.com/app/latestversion.jar!/com/example/app/version.txt");
    try (BufferedReader versionReader = new BufferedReader(
        new InputStreamReader(versionFile.openStream(), StandardCharsets.UTF_8))) {
    
        version = versionReader.readLine();
    }
    

    如果您从 .jar 文件的清单中读取版本,您可以只使用 JarInputStream 而不是 JarFile:

    String version;
    URL jarLocation = new URL("http://www.example.com/app/latestversion.jar");
    try (JarInputStream jarStream = new JarInputStream(jarLocation.openStream())) {
    
        version = jarStream.getManifest().getMainAttributes().getValue(
            Attributes.Name.SPECIFICATION_VERSION);
    }
    

    【讨论】:

    • 我发现我现在可以使用 JarInputStream 但感谢这篇文章,其他人可能会掌握它:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2013-10-01
    • 1970-01-01
    • 2010-12-06
    • 2012-01-11
    相关资源
    最近更新 更多