对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释
2017-04-17 19:24
621 查看
这是个非常基础的问题了,这里提供一些演示样例,帮助高速理解和记忆这个问题。
在该方法的文档:http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResourceAsStream%28java.lang.String%29 中具体有描写叙述了它接收的路径是怎样定义的! 本文原文出处: blog.csdn.net/bluishglc/article/details/38753047 严禁不论什么形式的转载,否则将托付CSDN官方维护权益!
关于Class.getResourceAsStream
首先。 我们必须先了解根路径“/”是怎样定义的。这对我们使用getResourceAsStream准确载入文件是非常重要的。
首先。我们要明白这个根路径是相应类所处类路径上的根文件夹!什么意思呢?假如一个项目经过编译之后生成了例如以下class文件和文件夹结构:
在这种编译输出文件夹下,文件"1.txt"的绝对路径名为:"/com/github/demo/1.txt" 文件"2.txt"的绝对路径名为:"/com/github/2.txt" 如同getResourceAsStream方法文档上的解释:以/开头时是绝对路径,与类路径不同的是路径上的“."换成了"/"。
接下着我们看相对路径!
首先我们必须明白“相对”路径总是指相对于当前class的路径。
比如。假设我们使用
InputStream is= A.class.getResourceAsStream("1.txt");
路径不是以/开头,说明这是一个相对路径,相对的是A.class这个文件,所以,这里的“1.txt”所指的正确位置是与A.class处于同一文件夹下的1.txt文件,这一文件是存在的,所引不会报错。
假设我们按相对路径的方式通过A去载入2.txt。则路径应该这样描写叙述:
InputStream is= A.class.getResourceAsStream("../2.txt")。
是的,用“.."表示上一级文件夹。
假设我们按相对路径的方式通过B去载入1.txt。则路径应该这样描写叙述:
InputStream is= B.class.getResourceAsStream("demo/1.txt")。
注意。demo前是没有/的,这是一个相对路径,是相对于B所在包下的demo子包里的1.txt文件,所以这个路径也是正确无误的!
关于ClassLoader.getResourceAsStream
class.getResourceAsStream终于调用是ClassLoader.getResourceAsStream
仅仅是在这之前对參数进行了调整。
假设參数已/开头,则去除/。否则把当前类的包名加在參数的前面。
在使用ClassLoader.getResourceAsStream时,路径直接使用相对于classpath的绝对路径,而且不能已 / 开头。
InputStream resourceAsStream = ClassLoader.getSystemResourceAsStream("com/github/demo/1.txt");
在该方法的文档:http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResourceAsStream%28java.lang.String%29 中具体有描写叙述了它接收的路径是怎样定义的! 本文原文出处: blog.csdn.net/bluishglc/article/details/38753047 严禁不论什么形式的转载,否则将托付CSDN官方维护权益!
关于Class.getResourceAsStream
首先。 我们必须先了解根路径“/”是怎样定义的。这对我们使用getResourceAsStream准确载入文件是非常重要的。
首先。我们要明白这个根路径是相应类所处类路径上的根文件夹!什么意思呢?假如一个项目经过编译之后生成了例如以下class文件和文件夹结构:
com |-github |-demo | |-A.class | |-1.txt |-B.class |-2.txt
在这种编译输出文件夹下,文件"1.txt"的绝对路径名为:"/com/github/demo/1.txt" 文件"2.txt"的绝对路径名为:"/com/github/2.txt" 如同getResourceAsStream方法文档上的解释:以/开头时是绝对路径,与类路径不同的是路径上的“."换成了"/"。
接下着我们看相对路径!
首先我们必须明白“相对”路径总是指相对于当前class的路径。
比如。假设我们使用
InputStream is= A.class.getResourceAsStream("1.txt");
路径不是以/开头,说明这是一个相对路径,相对的是A.class这个文件,所以,这里的“1.txt”所指的正确位置是与A.class处于同一文件夹下的1.txt文件,这一文件是存在的,所引不会报错。
假设我们按相对路径的方式通过A去载入2.txt。则路径应该这样描写叙述:
InputStream is= A.class.getResourceAsStream("../2.txt")。
是的,用“.."表示上一级文件夹。
假设我们按相对路径的方式通过B去载入1.txt。则路径应该这样描写叙述:
InputStream is= B.class.getResourceAsStream("demo/1.txt")。
注意。demo前是没有/的,这是一个相对路径,是相对于B所在包下的demo子包里的1.txt文件,所以这个路径也是正确无误的!
关于ClassLoader.getResourceAsStream
class.getResourceAsStream终于调用是ClassLoader.getResourceAsStream
仅仅是在这之前对參数进行了调整。
假设參数已/开头,则去除/。否则把当前类的包名加在參数的前面。
在使用ClassLoader.getResourceAsStream时,路径直接使用相对于classpath的绝对路径,而且不能已 / 开头。
InputStream resourceAsStream = ClassLoader.getSystemResourceAsStream("com/github/demo/1.txt");
相关文章推荐
- 对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释
- <转载>SpringMVC(7): 对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释
- 对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释 (转)
- 对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释
- 对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解
- Class.getResourceAsStream()与ClassLoader.getResourceAsStream()获取资源时的路径说明
- Java 使用getClass().getResourceAsStream()方法获取资源
- Java 使用getClass().getResourceAsStream()方法获取资源
- 新建java项目使用this.classLoader.getResourceAsStream方法导入xml文件时报找不到文件原因
- java.lang.ClassLoader中方法getResourceAsStream与ClassName.class.ResourceAsStream方法两者路径的区别
- 关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String name)的路径
- android studio下使用getclassloader().getresourceasstream()的问题
- 使用类加载器加载配置文件/getClassLoader().getResourceAsStream()
- java 路径、className.class.getResourceAsStream()、ClassLoader.getSystemResourceAsStream() 、FileInputStream
- android开发 通过class.getResourceAsStream()方法 获得资源。
- 关于class和classLoader的getResourceAsStream和getResource方法路径问题
- ClassLoader.getResourceAsStream(name);获取配置文件的方法
- java 路径、className.class.getResourceAsStream()、ClassLoader.getSystemResourceAsStream() 、FileInputStre
- ClassLoader.getResourceAsStream(name);获取配置文件的方法
- ClassLoader.getResourceAsStream(name);获取配置文件的方法