2013-02-27 2 views
0

나는 내 질문에 대한 답변을 이미 알고있는 것으로 알고 있지만 내 경우에는 대답을 찾을 수 없습니다.ressource에서 파일을 가져 오는 방법

자원에서 파일 유형을 얻는 것이므로 패키지화되면 액세스 할 수 있습니다. 내가 찾은 대답은 해당 파일을 읽으려고했지만 실제로 필요한 것은 File 객체를 생성하는 것입니다. 왜냐하면 그 객체를 기대하는 타사 라이브러리가 있기 때문입니다. 나는 true를 반환)합니다 (.exists 그래서 그 파일을 얻을 수있는 방법이 필요

C:\>java -jar test.jar 
    file:/C:/test.jar!/com/test/decision_template.xsl 
    C:\\file:\C:\test.jar!\com\test\decision_template.xsl, exist:false 
    java.io.FileNotFoundException: file:\C:\test.jar!\com\test\decision_template.xsl 
    (Syntaxe du nom de fichier, de rÚpertoire ou de volume incorrecte) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:120) 
    at com.test.Test.main(Test.java:30) 

:

String xslFilePath = new Test().getClass().getResource("/com/test/decision_template.xsl").getPath(); 
    System.out.println(xslFilePath); 
    File xsltfile = new File(xslFilePath); 
    System.out.println(xsltfile.getAbsolutePath()+", exist:"+xsltfile.exists()); 

나는이 결과를 가지고 : 여기

내가 시도한 코드입니다.

+2

이 질문에는 이미 많은 답변이 있습니다. http://stackoverflow.com/questions/403256/how-do-i-read-a-resource-file-from-a-java-jar-file. 가장 합리적인 일은 파일을 필요로하지 않는 것일뿐 일반적으로'InputStream'을 필요로합니다. –

답변

0

TrueZip 라이브러리를 사용해 볼 수 있습니다. 아주 좋습니다. 나 자신의 DirectoryScanner 또는 뭔가를 구현해야합니다 믿습니다.

더 나은 방법은 클래스 경로의 모든 병을 검사하는 자신의 구현을 노크하는 것뿐입니다. Here's an example 내가 GitHub의 프로젝트 중 하나에서 어떻게했는지. 나는 당신이 당신의 필요에 맞게 쉽게 맞출 수 있다고 생각합니다.

재미있게 보내세요! :)

관련 문제