2016-11-06 52 views
0

I'm閱讀從我的資源文件夾中的文件在單元測試讀取文件FileNotFound

我可以看到文件中的目標/測試類

但是當我嘗試將文件包裝成一個FileInputStream這一個拋出異常,因爲無法找到該文件

ClassLoader classLoader = getClass().getClassLoader(); 
File file = new File(classLoader.getResource("CV.pdf").getFile()); 
FileInputStream fis = new FileInputStream(file) 

輸出調試運行:

ClassLoader.getResource方法,(「CV.pdf」):

file:/Users/Development/File%20-%20Test%20Java%20trial/Code/target/test-classes/CV.pdf 

也許這可能是因爲我的文件夾有空白名稱?

該文件是肯定的,我可以在該文件夾中看到它。

我在這裏做錯了什麼?

問候。

+0

那麼什麼是在URL中的值'的getResource(...)'正在恢復? 'getFile'調用返回什麼值?什麼是以'file'結尾的文件路徑? –

+0

我更新我的問題與輸出 – paul

+1

路徑是URL編碼,你需要解碼它http://stackoverflow.com/q/6138127/2670892 –

回答

2

你真的需要FileInputStream嗎?

實際的文件甚至可以在jar裏面(如果你指示maven做測試jar)。

更靈活的方式是使用InputStream代替:

try(final InputStream is = getClass().getResource("CV.pdf").openStream()) 
{ 
    //Do something with is 
} 
+0

您也可以只執行'getClass()。getResourceAsStream(「CV.pdf」)'。 – VGR