如何从 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);
}
我想检查我当前正在处理的程序的更新,为此我下载了 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);
}