说明

Java中加载文件是通过ClassLoader来加载的,先获取到文件路径,然后在通过FileInputStream加载到内存中

一般加载的访问有lass.getResourceclass.getClassloader().getResource()两种

  • class.getResource() 默认从自己所在的包的路径开始加载,
  • class.getClassloader().getResource() 默认从classpath路径加载,也就是项目的resources目录开始

示例代码

Java类的路径在工程目录下的src/main/java/com/kewen/demo/classloader/ResourceTest
a资源文件路径为工程目录下的src/main/resources/com/kewen/demo/classloader/a.json
b资源文件路径为工程目录下的src/main/resources/b.json

1
2
3
4
5
6
7
8
9
10
11
public class ResourceTest {
public static void main(String[] args) {
//通过classloader获取
URL resource1 = ResourceTest.class.getClassLoader().getResource("b.json");
String path1 = resource1.getPath(); // /D:/Projects/demo-project/D0-Simple/target/classes/b.json
//通过class获取
URL resource2 = ResourceTest.class.getResource("a.json");
String path2 = resource2.getPath(); // /D:/Projects/demo-project/D0-Simple/target/classes/com/kewen/demo/classloader/a.json
System.out.println("ok");
}
}