Class.getResourceAsStream(path)与Thread.currentThread().getContextClassLoader().getResourceAsStream
来源:互联网 发布:windows 10 dpi 编辑:程序博客网 时间:2024/05/18 03:42
Class.getResourceAsStream(Path)获取的是Class类所在的package下或者工程下,例如一个Student类所在jar目录或者工程目录为D;\myapp\com\bbs\Student.class则如果path为“"file.txt"即是Student.getResourceAsStream("file.txt")则将会搜索D:\myapp\com\bbs下的file.txt文件,此时当前目录就是D:\myapp\com\bbs。如果path为./file.txt结果相同,如果不存在则返回Null。如果是以"/"开头,java会认为是一个绝对路径,则会从classpath的顶级目录开始搜索,即是path为"/file.txt",此时搜索空间为D:\myapp,找到D:\myapp\file.txt文件。
Student.getClassLoader().getResourceAsStream(path)则不同,搜索空间是当前工程下的类路径下可以在程序启东时通过-classpath path1;path2来添加,path并且必须是相对路径,不可使用“”\“”开头.例如path为"./file.txt"或者“”file.txt“”,则将会在以工程目录为起点搜索,即是“”D:\myapp\file.txt“下,如果Path为"com\bbs"”则会在相对工程目录下的com\bbs下搜索file.txt。
Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName) :每一个Thread都有一个context classloader与之对应,这个contextloader类是由父进程提供的,默认的contextloader为父进程的context classloader。如果在整个Thread结构中,你都没有通过Thread类的构造函数初始化某个Thread 的context classloader的话,那么,整个Thread的context classloader都将默认是system classloader。
ClassLoader.
getResourceAsStream()
"/"-separated names; no leading "/" (all names are absolute)Silent (returnsnull
)this.getClass().getClassLoader()
.getResourceAsStream
("some/pkg/resource.properties")
Class.
getResourceAsStream()
"/"-separated names; leading "/" indicates absolute names; all other names are relative to the class's packageSilent (returnsnull
)this.getClass()
.getResourceAsStream
("resource.properties")
ResourceBundle.
getBundle()
"."-separated names; all names are absolute;.properties
suffix is impliedThrows unchecked
java.util.MissingResourceException
ResourceBundle.getBundle
("some.pkg.resource")
参考(http://www.javaworld.com/article/2077344/core-java/find-a-way-out-of-the-classloader-maze.html)参考(https://www.ibm.com/developerworks/cn/java/j-lo-classloader/)
- Class.getResourceAsStream(path)与Thread.currentThread().getContextClassLoader().getResourceAsStream
- Thread.currentThread().getContextClassLoader().getResourceAsStream
- Thread.currentThread().getContextClassLoader().getResourceAsStream
- Thread.currentThread().getContextClassLoader().getResourceAsStream
- Thread.currentThread().getContextClassLoader().getResourceAsStream
- Class.forName() 初始化、Thread.currentThread().getContextClassLoader().getResourceAsStream
- Thread.currentThread().getContextClassLoader().getResourceAsStream("myConfig.xml"));//在src下寻找myC
- 读取配置文件Properties的一种方案(Thread.currentThread().getContextClassLoader() .getResourceAsStream()
- Thread.currentThread().getContextClassLoader()与Test.class.getClassLoader()区别
- Thread.currentThread().getContextClassLoader()与Test.class.getClassLoader()区别
- Thread.currentThread().getContextClassLoader()与Test.class.getClassLoader()区别
- Thread.currentThread().getContextClassLoader()与Test.class.getClassLoader()区别
- Thread.currentThread().getContextClassLoader()与Test.class.getClassLoader()区别
- Thread.currentThread().getContextClassLoader()与Test.class.getClassLoader()区别
- Class.getResourceAsStream(String path)
- 区别:Thread.currentThread().getContextClassLoader() and Class.getClassLoader()
- Thread.currentThread().getContextClassLoader() and Class.getClassLoader()
- Thread.currentThread().getContextClassLoader() and Class.getClassLoader()
- Java实现链式队列
- C++Operator
- NSString , NSArray和NSDictionary的遍历方式
- JVM实用参数(六) 吞吐量收集器
- eclipse新建workspace如何保留之前的相关设置
- Class.getResourceAsStream(path)与Thread.currentThread().getContextClassLoader().getResourceAsStream
- iOS 使用AFNetworking实现多张图片上传
- Android_实现省市区(县)三级联动效果
- Extern templates
- js需要把时间戳转为为普通格式
- 利用分类实现功能
- TQEditor logo网页在线编辑器 TQEditor
- poj 1273 hdu 1532 网络流最大流 Dinic算法
- bzoj1503郁闷的出纳员 Splay