【发布时间】:2017-12-21 16:22:57
【问题描述】:
我想检查我当前正在处理的程序的更新,为此我下载了 JarFile 并将其写入计算机内存。 现在我不知道如何将在此过程中创建的 byte[] “转换”为 一个 JarFile 对象。
那么如何将这个 byte[] 转换成 JarFile 对象呢?所以我可以读取 Jar 中包含版本号的文件?
【问题讨论】:
标签: java arrays jar byte inputstream
我想检查我当前正在处理的程序的更新,为此我下载了 JarFile 并将其写入计算机内存。 现在我不知道如何将在此过程中创建的 byte[] “转换”为 一个 JarFile 对象。
那么如何将这个 byte[] 转换成 JarFile 对象呢?所以我可以读取 Jar 中包含版本号的文件?
【问题讨论】:
标签: java arrays jar byte inputstream
不要将文件读入内存。直接阅读版本,使用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);
}
【讨论】: