我的项目中有以下路径,我正在为Someclass.java编写测试,命名为SomeClassTest.java,在测试中我需要阅读' sample.txt',但我可以无法读取该文本文件。 以下是我的项目结构。
src/
java/
SomeClass.java
test/
java/
SomeClassTest.java
resources/
sample.txt
我尝试使用以下代码来读取文件。
File file = new File("/resources/sample.txt");
FileReader fr = new FileReader(file);
br = new BufferedReader(fr);
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
上面的代码给出了fileNotFoundException。我可以知道我在这里做错了吗?
答案 0 :(得分:0)
试试这个:new File("src/test/resources/sample.txt");
答案 1 :(得分:0)
由于resources
是一个包,您可以使用getClass().getResourceAsStream(...)
来访问您的文件:
FileReader fr = new FileReader(getClass().getResourceAsStream("/resources/sample.txt");
br = new BufferedReader(fr);
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
此函数在类层次结构内的文件上打开InputStream
。
如果您是从静态上下文执行代码,则必须使用MyClass.class.getResourceAsStream(...)
而不是调用getClass().getResourceAsStream(...)
。
答案 2 :(得分:0)
你不应该那样使用。
File file = new File("/resources/sample.txt");
因为如果以斜杠开头意味着它将检查根目录。
所以你会像那样使用new File("src/test/resources/sample.txt");
。
或将资源目录从src移动到同一级别的src
然后你可以像这样使用new File("resources/sample.txt");
。