Class.getResourceAsStream()和ClassLoader.getResourceAsStream()

Edit

Class.getResourceAsStream()和ClassLoader.getResourceAsStream()



注意三点:

  • 1.用Class.getResourceAsStream() 时,路径应该是以"/"开头的,如:

    mypackage.Hello.class.getResourceAsStream("/config/config.ini");

  • 2.如果直接用ClassLoader.getResourceAsStream()不用以"/"开头.如,mypackage.Hello.class.getResourceAsStream("config/config.ini");
  • 3.注意文件放置的位置,应该放在classpath下.如 : 工程文件中的src下.


Class.getResourceAsStream()ClassLoader.getResourceAsStream()

这两个方法的区别是资源的定义不同, 一个主要用于相对与一个该Class类取资源,而另一个用于取相对于classpath的资源,用的是绝对路径。

1.在使用Class.getResourceAsStream时, 资源路径有两种方式, 一种以 /开头,则这样的路径是指定绝对路径, 如果不以/开头, 则路径是相对与这个class所在的包的。

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

举例,下面的三个语句,实际结果是一样的:

com.explorers.Test.class.getResourceAsStream("abc.jpg")

= com.explorers.Test.class.getResourceAsStream("/com/explorers/abc.jpg")

= ClassLoader.getResourceAsStream("com/explorers/abc.jpg")

@%2802.JavaSE%29%5BClass%2CClassLoader%2CgetResource%2CgetResourceAsStream%5D%0A%23%20Class.getResourceAsStream%28%29%u548CClassLoader.getResourceAsStream%28%29%0A%0A-----%0A**%u6CE8%u610F%u4E09%u70B9%3A**%0A-%201.%u7528%60Class.getResourceAsStream%28%29%60%20%u65F6%2C%u8DEF%u5F84%u5E94%u8BE5%u662F%u4EE5%60%22/%22%60%u5F00%u5934%u7684%2C%u5982%3A%0A%60mypackage.Hello.class.getResourceAsStream%28%22/config/config.ini%22%29%3B%60%0A%0A-%202.%u5982%u679C%u76F4%u63A5%u7528%60ClassLoader.getResourceAsStream%28%29%20%60%u4E0D%u7528%u4EE5%60%22/%22%60%u5F00%u5934.%u5982%2C%60mypackage.Hello.class.getResourceAsStream%28%22config/config.ini%22%29%3B%60%0A%0A-%203.%u6CE8%u610F%u6587%u4EF6%u653E%u7F6E%u7684%u4F4D%u7F6E%2C%u5E94%u8BE5%u653E%u5728%60classpath%60%u4E0B.%u5982%20%3A%20%u5DE5%u7A0B%u6587%u4EF6%u4E2D%u7684src%u4E0B.%0A%0A------%0A**%60Class.getResourceAsStream%28%29%60%u548C%60ClassLoader.getResourceAsStream%28%29%60**%0A%u8FD9%u4E24%u4E2A%u65B9%u6CD5%u7684%u533A%u522B%u662F%u8D44%u6E90%u7684%u5B9A%u4E49%u4E0D%u540C%uFF0C%20%u4E00%u4E2A%u4E3B%u8981%u7528%u4E8E%u76F8%u5BF9%u4E0E%u4E00%u4E2A%u8BE5Class%u7C7B%u53D6%u8D44%u6E90%uFF0C%u800C%u53E6%u4E00%u4E2A%u7528%u4E8E%u53D6%u76F8%u5BF9%u4E8Eclasspath%u7684%u8D44%u6E90%uFF0C%u7528%u7684%u662F%u7EDD%u5BF9%u8DEF%u5F84%u3002%0A%0A1.%u5728%u4F7F%u7528%60Class.getResourceAsStream%20%60%u65F6%uFF0C%20%u8D44%u6E90%u8DEF%u5F84%u6709%u4E24%u79CD%u65B9%u5F0F%uFF0C%20%u4E00%u79CD%u4EE5%20%60/%20%60%u5F00%u5934%uFF0C%u5219%u8FD9%u6837%u7684%u8DEF%u5F84%u662F%u6307%u5B9A%u7EDD%u5BF9%u8DEF%u5F84%uFF0C%20%u5982%u679C%u4E0D%u4EE5%60%20/%20%60%u5F00%u5934%uFF0C%20%u5219%u8DEF%u5F84%u662F%u76F8%u5BF9%u4E0E%u8FD9%u4E2Aclass%u6240%u5728%u7684%u5305%u7684%u3002%0A%0A2.%u5728%u4F7F%u7528%60ClassLoader.getResourceAsStream%60%u65F6%uFF0C%20%u8DEF%u5F84%u76F4%u63A5%u4F7F%u7528%u76F8%u5BF9%u4E8Eclasspath%u7684%u7EDD%u5BF9%u8DEF%u5F84%u3002%0A%u4E3E%u4F8B%uFF0C%u4E0B%u9762%u7684%u4E09%u4E2A%u8BED%u53E5%uFF0C%u5B9E%u9645%u7ED3%u679C%u662F%u4E00%u6837%u7684%uFF1A%0A%0A%60com.explorers.Test.class.getResourceAsStream%28%22abc.jpg%22%29%60%0A%3D%20%60com.explorers.Test.class.getResourceAsStream%28%22/com/explorers/abc.jpg%22%29%60%0A%3D%20%60ClassLoader.getResourceAsStream%28%22com/explorers/abc.jpg%22%29%60

时间: 2024-11-05 14:47:49

Class.getResourceAsStream()和ClassLoader.getResourceAsStream()的相关文章

对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释 (转)

对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释 标签: classgetResourceAsStreampath 2014-08-22 11:21 13675人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 这是个很基础的问题了,这里提供一些示例,帮助快速理解和记忆这个问题. 在该方法的文档:http://docs.oracle.com/javase/7/docs/

class getResourceAsStream 和 classloader getResourceAsStream获取资源的不同

工程目录结构: prj(工程根目录) cn json classloader GetResourceByClassAndClassLoader.Java beans.xml /** * */ package cn.json.classloader; import java.io.InputStream; /** * @author json * * @date 2014-5-7 * * @version 1.0 */ public class GetResourceByClassAndClass

Class.getResourceAsStream() VS. ClassLoader.getResourceAsStream()

For Class.getResourceAsStream(String name), if the name parameter doesn't start with a "/", then it's a relative path to the class's package. If the name parameter starts with a "/", then it's an absolute path. For ClassLoader.getResou

Class.getResourceAsStream和ClassLoader.getResourceAsStream方法

这是个很基础的问题了,这里提供一些示例,帮助快速理解和记忆这个问题. 在该方法的文档: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官方维护权益

ClassLoader.getResourceAsStream(name); 获取配置文件的方法

ClassLoader.getResourceAsStream(name);路径问题 InputStream in = getClass().getResourceAsStream('/'+"spring-beans.dtd"); 表示从classs目录下面的找文件,文件放在src下面就可以了.InputStream in = getClass().getResourceAsStream("spring-beans.dtd"); 表示从当前classs下面的路径找文

ClassLoader.getResourceAsStream() 加载配置文件资源

JAVA 笔记 ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别     Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致. 例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name") 会在com.test.mycode包下查找相应的资源. 如果这个name

ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别

package com.xinwei.util; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class PropertiesLoader { public static void main(String[] args) { // test1(); test2(); } //在使用Class.getResourceAsStream 时, 资源路径有两种方式,

JAVA 笔记 ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别

   Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致. 例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name") 会在com.test.mycode包下查找相应的资源. 如果这个name是以 '/' 开头的,那么就会从classpath的根路径下开始查找. ClassLoader.getResourceAsStream()  无论要查找

classLoader.getResourceAsStream中文乱码

一直用一个方法安然无恙,今天在新项目中突然乱码了,原代码: ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); InputStream is = null; is = classLoader.getResourceAsStream("config/constant.properties"); if (is != null) { try { props.load(is); } 优化后: sta