2016-11-06 51 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