2017-12-21 17 views
-2

Ich möchte nach Updates eines Programms suchen, an dem ich gerade arbeite, und dazu lade ich das JarFile herunter und schreibe es in den Speicher des Computers. Jetzt weiß ich nicht, wie man das Byte [], das während dieses Prozesses erstellt wurde, in ein JarFile-Objekt "konvertiert".So erstellen Sie ein internes JarFile-Objekt aus einem Byte []

Wie also dieses Byte [] in ein JarFile-Objekt konvertieren? Also kann ich die Datei im Jar lesen, die die Versionsnummer enthält?

Antwort

0

Lesen Sie die Datei nicht im Speicher. Lesen Sie einfach die Version direkt über eine 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(); 
} 

Wenn Sie die Version aus der .jar-Datei Manifest lesen, können Sie einfach einen JarInputStream anstelle eines JarFile verwenden:

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); 
} 
+0

ich dachte, heraus, dass ich jetzt einen JarInputStream benutzen kann, aber dank diesem Beitrag können andere den Dreh raushaben: P –

Verwandte Themen