2010-08-04 150 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(); 
} 

我能,如果讀它我只是寫一個沒有jar和w/o dm-server的junit測試。

測試打包到jar文件中,並位於jar文件的根目錄下。

請幫忙!!!!

感謝, 一個

+0

可能的重複[如何從Java中的jar讀取文件?](http://stackoverflow.com/questions/3369794/how-to-a-read-file-from-jar-in-java) – Qix 2014-12-07 21:30:33

回答

4

您需要使用Class的getResourcegetResourceAsStream方法從jar中讀取文件。

這是可以做到這樣的:

Reader fileReader = null; 

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

注意getResourceAsStream返回空值,如果它不能找到該文件。

編輯: 更正的test.xml到/test.xml

還要注意的是Class<T>版本的getResourceAsStream推遲到ClassLoadergetResourceAsStreamgetSystemResourceAsStream適當。

+0

getResourceAsStream返回null,我有jar的根目錄下的xml,這是調用它的正確方法嗎? InputStream is = this.getClass()。getResourceAsStream(「test.xml」); – Shah 2010-08-04 20:29:17

+0

@Shah:我的錯誤,看起來你在'test.xml'之前確實需要'/'。我馬上解決它。 – Powerlord 2010-08-04 20:33:49

+0

我試過了,它仍然爲我返回null。我將我的文件放在資源文件夾中。 – Phil 2017-11-21 18:24:28

4

ClassLoader.getResourceAsStream()將讓你從一個.jar文件中讀取資源。如果您的文件是.jar文件的根目錄,然後:

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

會給你從該文件的InputStream。