关于class.getResourceAsStream() 与class.getClassLoader().getResourceAsStream()区别
来源:互联网 发布:大数据是一种思维方式 编辑:程序博客网 时间:2024/06/05 09:21
首先用类加载资源文件的方式可以有以下三种: (包结构图)
1)InputStreaminStream=DaoFactory.class.getResourceAsStream("dao.properties");
2)inStream=DaoFactory.class.getResourceAsStream("/com/jdbc/dao/dao.properties")
3)inStream=DaoFactory.class.getClassLoader().getResourceAsStream("com/jdbc/dao/dao.properties");
第一种和第二种方式是采用Class对象去加载,第三种采用ClassLoader对象去加载资源文件,之所以Class对象也可以加载资源文件是因为Class类封装的ClassLoader的getResourceAsStream方法。从Class类中的源码中可以看出:
之所以这样做无疑还是方便客户端的调用,省的每次获取ClassLoader才能加载资源文件的麻烦。
路径问题:
1. 第三种是最本质的做法,前两种也是基于第三种去实现的。JVM会使BootstrapLoader去加载资源文件。所以路径还是这种相对于工程的根目录即"com/jdbc/dao/dao.properties"(不需要“/”)。
2. 第一种是采用的相对路径,资源文件相对于当前这个类即(DaoFactory类)的位置,这种方式Class对象做了一些处理。即resloveName(name)这个方法。最终name还是会转换成适合第三方式的name参数
3. 第二种是采用绝对路径,绝对路径是相对于classpath根目录的路径(工程里src目录对应bin目录(存放.class文件的目录))。
(Class类中resolveName方法)
- class.getResourceAsStream与class.getClassLoader().getResourceAsStream区别
- 关于class.getResourceAsStream() 与class.getClassLoader().getResourceAsStream()区别
- 关于class.getResourceAsStream() 与class.getClassLoader().getResourceAsStream()区别
- class.getResourceAsStream与class.getClassLoader().getResourceAsStream
- this.class.getClassLoader().getResourceAsStream
- this.class.getClassLoader().getResourceAsStream
- this.class.getClassLoader().getResourceAsStream
- this.class.getClassLoader().getResourceAsStream
- 正确使用Class.getResourceAsStream("")与Class.getClassLoader().getResourceAsStream("")
- this.class.getClassLoader().getResourceAsStream与this.class.getResourceAsStream
- Class.getClassLoader().getResourceAsStream()和Class.getResourceAsStream()
- Class.getResourceAsStream()和Class.getClassLoader().getResourceAsStream()用法
- 关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String name)的路径
- 在java开发中关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String
- 关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String name)的路径
- ClassLoader.getSystemResourceAsStream与Class.getClassLoader().getResourceAsStream()
- Class.getResourceAsStream()与ClassLoader.getResourceAsStream()的区别
- ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别
- debian8.8访问win7共享文件夹
- alsa用户空间编程
- (个人训练赛) poj1064 poj3616 poj3041
- 解决windows安装jekyll时的问题
- C6678多核DSP开发——imglib应用之边缘检测
- 关于class.getResourceAsStream() 与class.getClassLoader().getResourceAsStream()区别
- 0519 G2n#W2A-B 盐水的故事
- 【React Native系列教程】Mac(OSX)平台搭建React Native开发环境
- 自定义仿Viewpager
- JNI开发之JNI实践
- Shell脚本基础1-先清楚几个概念
- 计蒜客 灌溉 (最小生成树之prim算法)
- Hibernate 的三种查询方式:HQL、Criteria、Sql
- centos安装redis——(架构篇)