[Java开发之路](18)关于Class.getResource和ClassLoader.getResource的路径问题
Posted SunnyYoona
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java开发之路](18)关于Class.getResource和ClassLoader.getResource的路径问题相关的知识,希望对你有一定的参考价值。
Java中取资源时,经常用到Class.getResource和ClassLoader.getResource。昨天老师讲解题目时候,问我们为什么你们都是在文件前家上"/":
String path = Resources.class.getResource("/a.txt").getPath();
注:在Resources文件下创建了a.txt文件
我想我反正是试出来的,不使用"/"不行。为了正式解答心中的疑惑,我们正式来看看Resources路径问题。
1. Class.getResource(String path)
path不以’/‘开头时,默认是从此类所在的包下取资源; path以’/‘开头时,则是从ClassPath根下获取;
System.out.println("path:"+Resources.class.getResource("/"));
System.out.println("path:"+Resources.class.getResource(""));
输出结果:
path:file:/home/xiaosi/Study/lectures/target/classes/
path:file:/home/xiaosi/Study/lectures/target/classes/com/qunar/lectures/
2. ClassLoder.getClassLoder.getResource(String path)
path不能以’/‘开头时; path是从ClassPath根下获取;
System.out.println(r.getClass().getClassLoader().getResource(""));
System.out.println(r.getClass().getClassLoader().getResource("/"));//null
输出结果:
file:/home/xiaosi/Study/lectures/target/classes/
null
以上是关于[Java开发之路](18)关于Class.getResource和ClassLoader.getResource的路径问题的主要内容,如果未能解决你的问题,请参考以下文章
18年毕业!历经3年到现在的快手架构师,聊聊我的java后端学习之路!