`
baiqian
  • 浏览: 37818 次
  • 性别: Icon_minigender_2
  • 来自: 河南
社区版块
存档分类
最新评论

class和classLoader的getResourceAsStream()方法

    博客分类:
  • JAVA
阅读更多

两个都可以用于从 classpath 里面进行资源读取,

两个方法的区别是资源的定义不同,

一个主要用于相对与一个object取资源,

而另一个用于取相对于classpath的资源,用的是绝对路径。

在使用Class.getResourceAsStream 时, 资源路径有两种方式,

一种以 / 开头,则这样的路径是指定绝对路径,

一种不以 / 开头, 则路径是相对与这个class所在的包的。

在使用ClassLoader.getResourceAsStream时, 路径直接使用相对于classpath的绝对路径。

 

 

 

Tools.class.getClassLoader().getResourceAsStream(file);
首先,调用对象的getClass()方法是获得对象当前的类类型,这部分数据存在方法区中,而后在类类型上调用getClassLoader()方法是得到当前类型的类加载器,在Java中所有的类都是通过加载器加载到虚拟机中的,而且类加载器之间存在父子关系,就是子知道父,父不知道子,这样不同的子加载的类型之间是无法访问的(虽然它们都被放在方法区中),所以在这里通过当前类的加载器来加载资源也就是保证是和类类型同一个加载器加载的。
最后调用了类加载器的getResourceAsStream()方法来加载文件资源

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics