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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从byte []创建内部JarFile对象相关的知识,希望对你有一定的参考价值。

我想检查我正在处理的程序的更新,为此我下载了JarFile并将其写入计算机内存。现在我不知道如何将在此过程中创建的byte []转换为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);
}

以上是关于如何从byte []创建内部JarFile对象的主要内容,如果未能解决你的问题,请参考以下文章