2017-12-21 35 views
-2

현재 작업하고있는 프로그램의 업데이트를 확인하고 JarFile을 다운로드하여 컴퓨터 메모리에 기록하고 싶습니다. 이제이 과정에서 생성 된 byte []를 JarFile 개체로 "변환"하는 방법을 모르겠습니다.바이트에서 내부 JarFile 개체를 만드는 방법

그렇다면이 byte []를 JarFile 객체로 변환하는 방법은 무엇입니까? Jar 파일에서 버전 번호를 읽을 수 있습니까?

답변

0

파일을 메모리로 읽지 마십시오. 당신이 .jar 파일의 매니페스트에서 버전을 읽는 경우

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(); 
} 

, 당신은 단지 JarFile를 대신 JarInputStream를 사용할 수 있습니다 : 그냥이 jar URL 사용하여, 직접 버전을 읽을

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

내가 생각 이제 JarInputStream을 사용할 수 있지만이 게시물에 대해 감사드립니다. –