动态加载文件的时候经常用
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