从java中的单独文件夹中读取文本文件

时间:2014-12-11 09:51:25

标签: java file path

我的项目中有以下路径,我正在为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。我可以知道我在这里做错了吗?

3 个答案:

答案 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");