获取项目中的文件时,通常可以使用 Class
或者 ClassLoader
的 getResource
方法。
对于 Class
的 getResource
方法,有两种路径写法
- 以
/
开头:以 classpath 为相对目录 - 不以
/
开头:以当前类所在的包路径为相对路径
而 ClassLoader
的 getResource
方法总是从 classpath 开始搜寻。
本质上 Class
的 getResource
内部是通过调用 ClassLoader.getSystemResource
来实现的,只是对路径做了处理。
Class.getResource
源码:
public java.net.URL getResource(String name) {
name = resolveName(name);
ClassLoader cl = getClassLoader0();
if (cl==null) {
// A system class.
return ClassLoader.getSystemResource(name);
}
return cl.getResource(name);
}