[Java开发之路](18)关于Class.getResource和ClassLoader.getResource的路径问题

最后更新于:2022-04-01 10:00:00

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
';