className.class.getResourceAsStream与ClassLoader.getSystemResourceAsStream区别

className.class.getResourceAsStream :

一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类Test.class ,同时有资源文件config.properties

那么,应该有如下代码:

//前面没有“/”代表当前类的目录

InputStream is1 = Test.class.getResourceAsStream("config.properties");
System.out.println(is1);// 不为null

第二:在Test.class目录的子目录下,例如:com.x.y 下有类Test.class ,同时在 com.x.y.prop目录下有资源文件config.properties

那么,应该有如下代码:

//前面没有“/”代表当前类的目录

InputStream is2 = Test.class.getResourceAsStream("prop/config.properties");
System.out.println(is2);//不为null

第三:不在同目录下,也不在子目录下,例如:com.x.y 下有类Test.class ,同时在 com.m.n 目录下有资源文件config.properties

那么,应该有如下代码:

//前面有“/”,代表了工程的根目录

InputStream is3 = Test.class.getResourceAsStream("/com/m/n/config.properties");

System.out.println(is3);//不为null

ClassLoader.getSystemResourceAsStream :

和className.class.getResourceAsStream 的第三种取得的路径一样,但少了“/”

InputStream is4 = ClassLoader.getSystemResourceAsStream("properties/PayManagment_Config.properties");
System.out.println(is4);//不为null

时间: 2024-10-01 03:20:52

className.class.getResourceAsStream与ClassLoader.getSystemResourceAsStream区别的相关文章

ClassLoader.getSystemResourceAsStream()

一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类Test.class ,同时有资源文件config.properties 那么,应该有如下代码: //前面没有"/"代表当前类的目录 InputStream is1 = Test.class.getResourceAsStream("config.properties"); System.out.println(is1);// 不为null   第二:在Test.class目录的子目录下,

ClassLoader.getSystemResourceAsStream("a.txt")获取不到资源文件

一.解决方案 换成XXX.class.getClassLoader().getResourceAsStream("a.txt")即可. 二.场景复现 src/main/resource下存在文件a.txt,项目类中static 方法中读取该文件.ClassLoader.getSystemResourceAsStream("a.txt")获取不到资源文件 三.原因剖析 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() 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官方维护权益

Class.getResourceAsStream()和ClassLoader.getResourceAsStream()

Edit Class.getResourceAsStream()和ClassLoader.getResourceAsStream() 注意三点: 1.用Class.getResourceAsStream() 时,路径应该是以"/"开头的,如: mypackage.Hello.class.getResourceAsStream("/config/config.ini"); 2.如果直接用ClassLoader.getResourceAsStream()不用以"

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

在java反射中 Class.forName和classLoader的区别

解释 在java中,Class.forName()和ClassLoader()都可以对类进行加载,ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是"通过一个类的全限定名来获取描述此类的二进制字节流",获取到二进制流后放到JVM中.Class.forName()方法实际上也是调用的CLassLoader来实现的. Class.forName(String className)这个方法的源码是: 最后调用的方法是forName0这个方法,在这个forN

Class.getResource和ClassLoader.getResource区别与分析

零. 前言 在一个获取文件路径的代码内容上发现单元测试出现NullPointer, 但是这段代码却在服务器正常运行了两年多, 借此机会想认真探索下这两个方法的区别. 一. 区别 区别从代码输出结果来看比较清晰, 文件结构图: 以下为在多个场景下使用方式的代码: package com.wenniuwuren.test; /** * 获取文件路径 * Created by wenniuwuren on 15/8/14. */ public class GetResourceTest { publi