在Java中从单独的文件夹中读取文本文件。

3

我在项目中有以下路径,我正在为名为SomeClassTest.java的Someclass.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);
        }

上述代码出现了文件未找到异常。请问我在这里做错了什么?

请查看编辑后的帖子,测试文件夹不在src中,项目文件夹有平行文件夹'src'和'test'。 - User
3个回答

0
试试这个:new File("src/test/resources/sample.txt");

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(...)


0

你不应该这样使用。

File file = new File("/resources/sample.txt");

因为如果你以斜杠开头,它会在根目录中查找。

所以你会像这样使用 new File("src/test/resources/sample.txt");

或者将资源目录从 src 移动到与 src 相同的级别,然后你可以像这样使用 new File("resources/sample.txt");


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接