在java开发中关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String
来源:互联网 发布:德州冠军软件 编辑:程序博客网 时间:2024/06/11 21:01
在java开发中关于class.getResourceAsStream(Stringname)与class.getClassLoader().getResourceAsStream(String name)的路径的问题
如有上述目录:
package de.qmjs.jdbc.jdbcUtils;
publicclasstest {
/**
* @param args
*/
publicstaticvoid main(String[] args) {
//TODO Auto-generated method stub
System.out.println(test.class.getResourceAsStream("DaoConfig.properties"));//第一种
System.out.println(test.class.getResourceAsStream("/de/qmjs/jdbc/dao/DaoConfig.properties"));//的二中
System.out.println(test.class.getClassLoader().getResourceAsStream("de/qmjs/jdbc/dao/DaoConfig.properties"));//第三种
}
}写上面一个测试类:
结果如下
第一种和第二种方式是采用Class对象去加载,第三种采用ClassLoader对象去加载资源文件,之所以Class对象也可以加载资源文件是因为Class类封装的ClassLoader的getResourceAsStream方法。从Class类中的源码中可以看出:
路径问题:
1. 第三种是最本质的做法,前两种也是基于第三种去实现的。JVM会使用BootstrapLoader去加载资源文件。所以路径还是这种相对于工程的根目录即"com/jdbc/dao/dao.properties"(不需要“/”)。
2. 第一种是采用的相对路径,资源文件相对于当前这个类即(DaoFactory类)的位置,这种方式Class对象做了一些处理。即resloveName(name)这个方法。最终name还是会转换成适合第三方式的name参数,但是第一种在测试时返回的确实空。
3. 第二种是采用绝对路径,绝对路径是相对于classpath根目录的路径(工程里src目录对应bin目录(存放.class文件的目录))。
所以:
建议使用第三种,避免硬编码。
- 在java开发中关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String
- 关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String name)的路径
- 关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String name)的路径
- java中getResourceAsStream(String path)与getClassLoader.getResourceAsStream(String path)
- 关于class.getResourceAsStream() 与class.getClassLoader().getResourceAsStream()区别
- 关于class.getResourceAsStream() 与class.getClassLoader().getResourceAsStream()区别
- class.getResourceAsStream与class.getClassLoader().getResourceAsStream区别
- class.getResourceAsStream与class.getClassLoader().getResourceAsStream
- Class.getResourceAsStream(String path)
- 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()用法
- java基础之 Class.getResourceAsStream(String path)
- 在ASP中自动创建多级文件夹的函数(使用FSO)
- 领悟工具的“威力”,磨刀擦擦擦--Windows上也能用strings输出controlfile中文件结构信息
- 通过 http 协议上传文件(rfc1867协议概述) multipart/form-data;boundary 解释
- [转]数据库三范式经典实例解析
- sed默认最长的可能性匹配,如何修改到最短匹配?
- 在java开发中关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String
- AE10 运行时绑定(解决Could not bind to a valid ArcGIS installation)
- 下个十年PC与服务器的发展变化
- Valgrind---linux上的程序调试和分析工具
- NGN的产生与发展(一)
- jQuery内容过滤选择器选择元素实例讲解
- Could not bind to a valid ArcGIS installation问题的解决
- 常见内部排序方法的比较以及选择
- Android Listview控件中的其他控件的焦点问题