Class.getResourceAsStream和ClassLoader.getResourceAsStream
2013-08-27 20:05
183 查看
首先粘取二者的API:
Class类:getResourceAsStream
public InputStream getResourceAsStream(String name)
查找具有给定名称的资源。查找与给定类相关的资源的规则是通过定义类的
class loader 实现的。此方法委托此对象的类加载器。如果此对象通过引导类加载器加载,则此方法将委托给
ClassLoader.getSystemResourceAsStream(java.lang.String)。
在委托前,使用下面的算法从给定的资源名构造一个绝对资源名:
如果 name 以 '/' 开始 ('\u002f'),则绝对资源名是 '/' 后面的
name 的一部分。
否则,绝对名具有以下形式:
modified_package_name/name
其中 modified_package_name 是此对象的包名,该名用 '/' 取代了 '.' ('\u002e')。
参数:
name- 所需资源的名称 返回: 一个
InputStream对象;如果找不到带有该名称的资源,则返回
null 抛出:
NullPointerException- 如果
name 是 null 从以下版本开始: JDK1.1
ClassLoader类:
getResourceAsStream
public InputStream getResourceAsStream(String name)
返回读取指定资源的输入流。
getResource(String)的文档中描述了搜索顺序。
参数:
name- 资源名称 返回: 用于读取资源的输入流,如果无法找到资源,则返回 null 从以下版本开始: 1.1
从API上可以看出,Class也委托了类加载器进行读取资源,只是在对资源的定位上使用了不同的方式;从功能上讲,两个都可以用于从 classpath 里面进行资源读取, classpath包含classpath中的路径和classpath中的jar。
两个方法的区别是资源的定义不同,一个主要用于相对与一个对象取资源,而另一个用于取相对于classpath的资源,用的是绝对路径。
在使用Class.getResourceAsStream 时,资源路径有两种方式:
1、以 / 开头,则这样的路径是指定绝对路径;
2、不以 / 开头,则路径是相对与这个class所在的包的。
在使用ClassLoader.getResourceAsStream时,路径直接使用相对于classpath的绝对路径。
相关文章推荐
- Class.getResourceAsStream 和 ClassLoader.getResourceAsStream
- Class.getResourceAsStream() VS. ClassLoader.getResourceAsStream()
- 对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释
- <转载>SpringMVC(7): 对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释
- this.getClass().getResourceAsStream("") 和this.getClass().getClassLoader()getResourceAsStream("")的区别
- getClass().getResourceAsStream VS getClass().getClassLoader().getResourceAsStream
- java.lang.ClassLoader中方法getResourceAsStream与ClassName.class.ResourceAsStream方法两者路径的区别
- ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别
- JAVA中路径问题总结Class.getResourceAsStream() & ClassLoader的getR...
- Class.getResourceAsStream 和 ClassLoader.getResourceAsStream
- Class.getResourceAsStream() VS. ClassLoader.getResourceAsStream()
- Java中getResourceAsStream,Class.getClassLoader()
- android studio下使用getclassloader().getresourceasstream()的问题
- InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("dbconfig.properties")的作用
- JavaSE8基础 Class 通过class.getClassLoader.getSystemResourceAsStream 返回一个InputStream
- className.class.getResourceAsStream()与ClassLoader.getSystemResourceAsStream() 的区别
- JAVA 笔记 ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别
- this.class.getClassLoader().getResourceAsStream与this.class.getResourceAsStream
- Class.getResourceAsStream和ClassLoader.getResourceAsStream
- JAVA 笔记xx.getClass().getClassLoader().getResourceAsStream()