Java中getClassLoader().getResourceAsStream("XXX")的用法

来源:互联网 发布:suse linux 安装教程 编辑:程序博客网 时间:2024/06/07 07:25

  动态加载文件的时候经常用

InputStream is = XMLAnalyzer.class.getClassLoader().getResourceAsStream("test.xml");


首先

xxxxx.class 是获得xxxx这个类对应的Class对象,任何一个类被装载进入虚拟机,都会为这个类生成一个java.lang.Class对象来指代这个类,通过这个对象,你可以访问和控制xxxx这个类的一些特性。


getClassLoader()

 获得此类类加载器


getResourceAsStream("")

获取文件的流

但是经常有路径问题

class 和 classloader都有这个方法

如果文件放在根目录下

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

如果不加'/',说明从本类包下加载

2,如果直接用ClassLoader的getResourceAsStream() 不用以"/"开头.如,
class.getResourceAsStream("......");

  想到调用包下的资源就要

  class.getResourceAsStream("com/jm/...");


其实class的getResourceAsStream("")是委托classloader来完成的,本质还是classLoader实现,不过直接用class用起来方便一些。

其实他们还有共同的另一个方法

URL url1 = XXXX.getResource("");

两个用法与getResourceAsStream()相同,只不过是获得的是一个URL

原创粉丝点击