getResourceAsStream(“”)路径问题
2015-07-27 18:51
134 查看
转载:http://wenku.baidu.com/link?url=b5RtS3JwbLJJJiJAdh3ifknbOM2SRU7qrL3zKbfp0dlbrTmNh7A6LUKy39PoSKKrnw3EEeRY4NYmzYaDEMxzR0scoF-PzS6RdXihE3LGMNO
关于class.getResourceAsStream(String name)与
class.getClassLoader().getResourceAsStream(String name)的路径name问题
首先用类加载资源文件的方式可以有以下三种:
![](http://img.blog.csdn.net/20150727184926730)
(包结构图)
1) InputStream inStream = 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类中的源码中可以看出:
![](http://img.blog.csdn.net/20150727184959678)
之所以这样做无疑还是方便客户端的调用,省的每次获取ClassLoader才能加载资源文件的麻烦。
路径问题:
1. 第三种是最本质的做法,前两种也是基于第三种去实现的。JVM会使用Bootstrap Loader去加载资源文件。所以路径还是这种相对于工程的根目录即”com/jdbc/dao/dao.properties”(不需要“/”)。
2. 第一种是采用的相对路径,资源文件相对于当前这个类即(DaoFactory类)的位置,这种方式Class对象做了一些处理。即resloveName(name)这个方法。最终name还是会转换成适合第三方式的name参数
3. 第二种是采用绝对路径,绝对路径是相对于classpath根目录的路径(工程里src目录对应bin目录(存放.class文件的目录))。
![](http://img.blog.csdn.net/20150727184916945)
(Class类中resolveName方法)
关于class.getResourceAsStream(String name)与
class.getClassLoader().getResourceAsStream(String name)的路径name问题
首先用类加载资源文件的方式可以有以下三种:
(包结构图)
1) InputStream inStream = 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会使用Bootstrap Loader去加载资源文件。所以路径还是这种相对于工程的根目录即”com/jdbc/dao/dao.properties”(不需要“/”)。
2. 第一种是采用的相对路径,资源文件相对于当前这个类即(DaoFactory类)的位置,这种方式Class对象做了一些处理。即resloveName(name)这个方法。最终name还是会转换成适合第三方式的name参数
3. 第二种是采用绝对路径,绝对路径是相对于classpath根目录的路径(工程里src目录对应bin目录(存放.class文件的目录))。
(Class类中resolveName方法)
相关文章推荐
- ubuntu python 安装
- LeetCode 238: Product of Array Except Self
- shell
- 基于ZXing的二维码,你可以这样改造它
- Master-Mind Hints
- 基于ZXing的二维码,你可以这样改造它
- Android 广播机制 详解
- Singleton(单例模式)
- [MapReduce]Filter Pattern
- Extjs 细节 锁定浏览器,只能操作当前窗口
- UVA 10048
- xcode如何实现多工程联编
- POJ 2785 4 Values whose Sum is 0 (对半分解 二分搜索)
- 鲁大师之数据中心实验手册
- 生产环境批量检查web服务是否正常并且发送相关邮件或手机报警
- 简单了解Markdown
- 【MFC-7】VS2010编程之浏览文件夹
- hdu 3335 最大独立集,疑惑
- scala下划线的含义
- 宏定义(const)和常量定义(#define)的区别