如何从 byte[] 创建内部 JarFile 对象

How to create an internal JarFile Object from a byte[]

我想检查我当前正在处理的程序的更新,为此我下载了 JarFile 并将其写入计算机内存。 现在不知道怎么把这个过程中创建的byte[]"convert"改成 一个 JarFile 对象。

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

不要将文件读入内存。直接阅读版本,使用 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);
}