码迷,mamicode.com
首页 > 其他好文 > 详细

关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String name)的路径name问题

时间:2014-08-14 16:08:19      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:http   使用   strong   文件   问题   ad   res   on   

关于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文件的目录))。

原文: http://www.iteye.com/topic/1021214

关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String name)的路径name问题,布布扣,bubuko.com

关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String name)的路径name问题

标签:http   使用   strong   文件   问题   ad   res   on   

原文地址:http://www.cnblogs.com/qiangupc/p/3912400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!