先看项目截图
 
public  class FileTest {
    public static void main(String[]args) throws IOException {
        String path = Objects.requireNonNull(FileTest.class.getClassLoader().getResource("")).getPath();
        System.out.println(path);
        System.out.println("***********");
        String result = FileUtils.readFileToString(new File(path+"config/First.xml"), StandardCharsets.UTF_8);
        System.out.println(result);
    }
}
文件放在resources目录下,用上面的方式就能读。
那如果文件放到src目录下呢?
 比较麻烦
 为什么?因为我们知道java的运行是把后缀名为java的文件进行编译,编译成.class文件, 然后统一放到/Users/dongleifeng/IdeaProjects/parent_pro/spring_boot/target/classes/ 下面这个位置
 
我们可以看到target下有两个文件夹一个classes和一个test-classes
 如上图所示,我用的ide是idea,idea默认只把
 src/main/java 下的后缀名为.java的文件进行了编译,复制到classes文件夹
 src/main/resources 下的所有配置文件复制到classes文件夹
 还有test下面的对应文件复制到test-classes
 加入你把配置文件放到src下面,最终咱们的业务逻辑是在classes文件夹里开始的,那自然就没法感知到原来的src/main/java下面的配置文件了。
怎么办,既然知道了为什么访问不到文件,那想办法让idea把src下面的非java文件也复制到target/classes下面不就OK了?
解决方案见:
 https://blog.csdn.net/shifangwannian/article/details/48882201
但是我觉得不好,最好的方式依然是把配置文件放到resources目录下
 人家规范都定好了
 src下面是源文件
 resources下是配置文件
 为啥要打破这个规则呢?
另外再附一个读取properties文件的方式
 【Java】读取/加载 properties配置文件的几种方法



















