如何从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对象的主要内容,如果未能解决你的问题,请参考以下文章

如何从 python 3 中的 for 循环内部增加迭代器?

从byte []创建com.lowagie.text.Image的实例

如何编写代码以通过 SPI 主机将数据从内部存储器传输到 2 个从机

如何从普通的JavaScript数组创建kotlin.collections.Set?

如何从 kotlin 中的内部对象类访问类级别变量

从 .jar 文件重新创建项目