src/main/resources中的FileNotFoundException

Mul*_*ard 18 java filenotfoundexception maven

我在src/main/resources下的maven项目中放置了一个文件,文件名只是temp.txt.

当我尝试打开文件时:

BufferedReader br = new BufferedReader(new FileReader(new File("./temp.txt")));
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Exception in thread "main" java.io.FileNotFoundException: \temp.txt
Run Code Online (Sandbox Code Playgroud)

src/main/resources下的所有文件都放在maven下的classpath的根文件夹中.那么为什么程序无法在这里找到文件呢?

Pau*_*tha 22

如果要将文件打包在类路径中,则从类路径中读取它.

Maven结构

src
   main
       resources
               file.txt
Run Code Online (Sandbox Code Playgroud)

构建之后,文件将放置在类路径的根目录中.所以使用

InputStream is = getClass().getResourceAsStream("/file.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
Run Code Online (Sandbox Code Playgroud)

/前面的file.txt将带您到根,无论从任何包装类是英寸


UPDATE

测试示例

package com.underdogdevs.stackoverflow;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class TestResourceFile {

    public static void main(String[] args) throws IOException {
        InputStream is = TestResourceFile.class.getResourceAsStream("/test.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述


小智 5

只需将此作为您的路径:

BufferedReader br = new BufferedReader(new FileReader(new 
File("src/main/resources/temp.txt")));
Run Code Online (Sandbox Code Playgroud)