使用getResourceAsStream()从src / test / resources获取文件

时间:2018-10-22 14:59:55

标签: java

file structure here

++添加 我想基于json模式文件验证json。 我目前将json保存为string,并尝试读取json模式文件(即test.json),然后进行验证。 但是,读取架构文件始终为null。

下面的代码是我到目前为止尝试过的。

++原始帖子。

这是我目前的情况。 我已经尝试了多种方法来获取文件(test.json)...

喜欢

InputStream in;



1.  in= valid.class.getResourceAsStream("/test.json"); 
2.  in = getClass().getClassLoader().getResourceAsStream("/test.json");
3.   in = Thread.currentThread().getContextClassLoader().getResourceAsStream("//test.json");
4. in=getClass().getResourceAsStream("/test.json"); 

5. in=ValidationUtils.class.getResourceAsStream("../resources/ds/test.json"); 

6. ClassLoader classLoader =  getClass().getClassLoader();
   in = classLoader.getResourceAsStream("test.json");
7.in=getClass().getResourceAsStream("/ds/test.json"); //tried just now


System.out.println("in"+in); //this is always null.

没什么..上面的工作.. 请帮助我...

2 个答案:

答案 0 :(得分:2)

默认情况下,您无法从src/test/resources中的代码访问src/main/java资源。所有src/test/resources资源仅适用于通常存储在src/test/java中并在test阶段(在Maven中)执行的测试。在该阶段,测试代码可以通过您在问题中引用的某些(不是全部)方法访问该资源。

对于您的主类,资源根为src/main/resources。您应该在其中存储JSON模式文件。测试代码也可以访问在那里存储的资源(因此不需要重复),反之亦然。

答案 1 :(得分:0)

获取资源时,资源文件夹是根目录。如果文件在子文件夹中,则需要将其包括在路径中。使用

in = getClass().getResourceAsStream("/ds/test.json");