2014-01-09 122 views
0

我有標準的Maven項目結構:是在資源文件夾中打開文件/裏面的jar

-src 
| 
--main 
    | 
    ---java 
    ---resources 
     | 
     ----file.txt 

我需要閱讀應用程序啓動文件(閱讀DB模式和執行SQL腳本,所以這個文件是通過FileReader打開)。當開發的應用,然後使用下面的代碼從project/target/classes/file.txt得到它:

getClass().getResource("/file.txt").getFile() 

該文件還出現在結果jar文件的根目錄。在應用程序啓動後,它不能被訪問,因爲它是在不在裏面的jar文件附近搜索的。

如何在jar /資源文件夾中訪問該文件?

+0

當你使用了什麼事類加載器而不是類?當你刪除斜線時發生了什麼? –

+0

當我刪除斜線 - NPE發生。如果我使用ClassLoader並刪除斜槓,則在'target/classes /'中搜索文件。 – Dragon

+0

你確定你的資源目錄被包含在jar中嗎?如果是這樣,在哪裏? –

回答

0

你需要的是讀取文件作爲一種資源,而不是與文件

InputStream stream = getClass().getClassLoader().getResourceAsStream("file.txt"); 

相關的問題和答案可以在這裏找到:

How to really read text file from classpath in Java

+0

是的,我已經嘗試過了,我認爲'getResourceAsStream'是最好的方法。 – Dragon