背景
代码中经常需要获取项目中的静态文件,例如读取配置文件等。我们常用class.getResource或ClassLoader.getResource进行读取,但两者的参数在路径处理上些许区别
class.getResource
这种情况,我们用一个class来直接获取资源。会将目标资源路径根据规则进行转义,因为最终会使用ClassLoader.getResource来查找资源。
当目标资源已"/"开头时,此时在classPath下进行查询,否则相对该class所在包路径为基准进行查找的,会默认将class所在包路径拼接到资源路径上。
总结
分类 | 资源路径 | 查找范围 |
---|---|---|
class | xxx/xxx | 当前Class包路径下 |
class | /xxx/xxx | classPath路径下 |
classLoader | xxx/xxx | classPath路径下 |
classLoader | /xxx/xxx | 不允许,异常 |
相应getResourceAsStream规则和getResource一致,Loader的底层分析之后分享