2010-08-04 3 views
2

내가 DM-서버 여기자바 - 항아리

에 배포 jar 파일에서 XML 구성을 읽을하려고에서 XML 파일을 읽는 것은 내가 경우를 읽을 수 있었다 코드

Reader fileReader = null; 
try { 
fileReader = new FileReader("test.xml"); 
} catch (FileNotFoundException fnfex) { 
fnfex.printStackTrace(); 
} catch (IOException ioex) { 
ioex.printStackTrace(); 
} 

에게 있습니다 난 단지 junit 테스트 w/o 항아리 및 쓰기/O를 dm 서버를 써주세요.

테스트는 jar 파일로 압축되고 jar 파일의 루트에 있습니다.

도와주세요 !!!!

+0

가능한 복제본 [Java에서 jar 파일을 읽는 방법] (http://stackoverflow.com/questions/3369794/how-to-a-read-file-from-jar-in-java) – Qix

답변

4

jar에서 파일을 읽으려면 클래스 getResource 또는 getResourceAsStream 메서드를 사용해야합니다.

는 다음과 같이 수행 할 수 있습니다 getResourceAsStream 반환 널 (null)이 파일을 찾을 수없는 경우 있음을

Reader fileReader = null; 

InputStream is = this.getClass().getResourceAsStream("/test.xml"); 
if (null != is) { 
    fileReader = new InputStreamReader(is); 
} 

참고.

편집 : 수정 test.xml의 또한주의

을 /test.xml하는 것과 getResourceAsStream 연기의 Class<T> 버전 ClassLoadergetResourceAsStream 또는 getSystemResourceAsStream 적절.

+0

getResourceAsStream은 null을 리턴합니다. jar 파일의 루트에 xml이 있습니다. 올바른 호출 방법입니까? InputStream is = this.getClass(). getResourceAsStream ("test.xml"); – Shah

+0

@Shah : 실수로,'test.xml' 전에'/'가 필요합니다. 잠시 후에 고칠 것입니다. – Powerlord

+0

나는 이것을 시도하고 여전히 나를 null을 반환합니다. 리소스 폴더에 파일을 저장합니다. – Phil

4

ClassLoader.getResourceAsStream() 당신이 .jar 파일 내에서 자원을 읽을 수

감사합니다. 파일이 .jar 파일의 루트에 있으면

this.getClass().getClassLoader().getResourceAsStream("/test.xml"); 

이 해당 파일의 InputStream을 제공합니다.