2014-03-25 68 views
0

我正在嘗試將文件加載到我編寫的解析器類中,但我一直在下一行中獲取NPE。我已經改變了文件路徑,但它沒有幫助。 的dataset.csv文件的位置是在Java中加載文件時的NPE

文件位置被定義爲SRC/RES /原料:

private static final String FILE = "/res/raw/dataset.csv"; 

File file = new File(this.getClass().getResource(FILE).getFile()); 

的線的上方一直拋出NPE

+1

與其試圖將資源用作文件,不如將其用作資源(URL或InputStream)?我懷疑在這裏可能會出現[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 –

回答

2

資源不是文件或Files.它們可能位於JAR文件中。

您應該使用由this.getClass().getResource(FILE),返回的URI或由this.getClass().getResourceAsStream(FILE),直接返回的InputStream

+0

你能解釋一下嗎,我不會跟着你。 – user3363286

+0

我已經解釋過了。你必須告訴我'你應該直接使用URI ...或InputStream ...'的部分,你不明白。我甚至爲你寫了一些代碼。 – EJP

0

getResource()方法使用類路徑到找到資源。如果你正在尋找的文件不在類路徑中,它將不會被找到,你將得到一個空指針異常。

+0

好的,解決方案是什麼? – user3363286

+0

@ EJP的答案包含鍵 - 使用this.getClass()。getResourceAsStream(FILE)它將返回一個InputStream到你需要的文件。確保文件在您的類路徑中 - 無論是在.class文件還是在同一個jar中。 – Jason