比较Class.getResource与Class.getClassLoader().getResource两种方式读取资源文件
Posted N!CE波
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较Class.getResource与Class.getClassLoader().getResource两种方式读取资源文件相关的知识,希望对你有一定的参考价值。
1 /** 2 * @author zhangboqing 3 * @date 2018/7/10 4 */ 5 public class FileDemo { 6 7 8 public static void main(String[] args) { 9 // demo1(); 10 // demo2(); 11 12 // demo3(); 13 // demo4(); 14 } 15 16 17 //===================================================== 18 // 1.Class.getResource(String path) 19 //===================================================== 20 //Class.getResource和Class.getResourceAsStream在使用时,路径选择上是一样的。 21 //path不以’/‘开头时,默认是从此类所在的包下取资源; 22 //path 以’/‘开头时,则是从ClassPath根下获取; 23 24 private static void demo1() { 25 System.out.println(FileDemo.class.getResource("")); 26 System.out.println(FileDemo.class.getResource("/")); 27 28 //file:/Users/zhangboqing/Software/MyGithub/java_knowledge_sea/java_base/target/classes/com/zbq/base/file/ 29 //file:/Users/zhangboqing/Software/MyGithub/java_knowledge_sea/java_base/target/classes/ 30 } 31 private static void demo2() { 32 // 当前类(class)所在的包目录 33 System.out.println(FileDemo.class.getResource("")); 34 // class path根目录 35 System.out.println(FileDemo.class.getResource("/")); 36 37 // TestMain.class在com.zbq.base.file包中 38 // 2.properties 在com.zbq.base.file包中 39 System.out.println(FileDemo.class.getResource("2.properties")); 40 41 // FileDemo.class在com.zbq.base.file包中 42 // 3.properties 在com.zbq.base.file.demo包中 43 System.out.println(FileDemo.class.getResource("demo/3.properties")); 44 45 // FileDemo.class在com.zbq.base.file包中 46 // 1.properties 在(class根目录) 47 System.out.println(FileDemo.class.getResource("/1.properties")); 48 } 49 50 //====================================================================== 51 // 2.Class.getClassLoader().getResource(String path) 52 //====================================================================== 53 //Class.getClassLoader().getResource和Class.getClassLoader().getResourceAsStream在使用时,路径选择上也是一样的 54 //path不能以’/‘开头时; 55 //path是从ClassPath根下获取; 56 57 private static void demo3() { 58 FileDemo t = new FileDemo(); 59 System.out.println(t.getClass()); 60 System.out.println(t.getClass().getClassLoader()); 61 System.out.println(t.getClass().getClassLoader().getResource("")); 62 System.out.println(t.getClass().getClassLoader().getResource("/"));//null 63 } 64 65 private static void demo4() { 66 FileDemo t = new FileDemo(); 67 System.out.println(t.getClass().getClassLoader().getResource("")); 68 69 System.out.println(t.getClass().getClassLoader().getResource("1.properties")); 70 System.out.println(t.getClass().getClassLoader().getResource("com/zbq/base/file/2.properties")); 71 System.out.println(t.getClass().getClassLoader().getResource("com/zbq/base/file/demo/3.properties")); 72 } 73 }
以上是关于比较Class.getResource与Class.getClassLoader().getResource两种方式读取资源文件的主要内容,如果未能解决你的问题,请参考以下文章
Class.getResource和ClassLoader.getResource的区别分析
Class.getResource() 和 ClassLoader.getResource() 有啥区别?
关于Class.getResource和ClassLoader.getResource的路径问题
Class.getResource()和ClassLoader.getResource()异同及用法