Class.getResource与ClassLoader.getResource()区别
来源:互联网 发布:剑三邪笑炮哥捏脸数据 编辑:程序博客网 时间:2024/06/10 05:30
class.getResource(String res)的使用
该方法是根据类的相对路径来访问资源的。如果该类没有package,则类的根路径是就是当前路径;如果该类有package,则类的根路径是定级包所在的路径。例如:
Drawing没有定义package,Drawing.class与images在相同路径下这样访问:当前路径就是根路径
Image img = (new ImageIcon(Drawing.class.getResource("images/title.gif"))).getImage();
Image img = (new ImageIcon(Drawing.class.getResource("./images/title.gif"))).getImage();
Image img = (new ImageIcon(Drawing.class.getResource("/images/title.gif"))).getImage();
Drawing定义package myjava.gui,Drawing.class位于myjava/gui目录,myjava与images在相同路径下这样访问:
Image img = (new ImageIcon(Drawing.class.getResource("/images/title.gif"))).getImage();(实际中建议使用该方式)
Image img = (new ImageIcon(Drawing.class.getResource("../../images/title.gif"))).getImage();
===================================
Class.getResource()方法实际上委托装入该类的类装载器,返回一个用于读取类文件资源的URL;或者,当指定的类名字不能在当前的classpath中找到时,Class.getResource()方法返回null。
===================================
可以看到,Class的getResource方法,实际上是靠调入这个类的ClassLoader的getResourc
e方法来实现的,如果调入这个类的ClassLoader是原生的BootStrap ClassLoader,这个Cl
assLoader是用C++写成的,在Java中没有相对应的物件。这时候的实现靠的是ClassLoader
的静态方法getSystemResource。
只有当使用Class类的getResource方法的时候,才会有下面介绍的那种算法。
这种算法就是说,
如果你指定的路径以/开头,那么就是从ClassPath的起点开始寻找这个路径。
如果直接以某个名字开头,那么就是从当前包名的目录为起点开始寻找。
所以大家如果用过hibernate就知道,有些表示类到数据库表的映射关系的xml文件就和这
个类的class文件放在一起,这样它就直接使用这个类.class.getResource方法来得到这个
xml文件。
而在使用ClassLoader的getResource方法的时候,永远是以Classpath为直接起点开始寻找
资源的。不用担心从什么包开始寻找的问题。
用Class.getResource不加/就是从当前包开始找,用ClassLoader.getResource不加/就是
直接从Classpath的起点开始寻找。
当然,如果你觉得有困难,你定位资源的时候全部都使用/开头的方式就好了
- Class.getResource与ClassLoader.getResource()区别
- Class.getResource与ClassLoader.getResource()区别
- Class.getResource()与ClassLoader.getResource()区别
- Class.getResource()、ClassLoader.getResource()、ClassLoader.getSystemResource()区别
- Class.getResource和ClassLoader.getResource区别与分析
- Class.getResource() 和 ClassLoader.getResource() 的区别
- Class.getResource和ClassLoader.getResource 的区别
- Class#getResource与ClassLoader#getResource分析
- Class.getResource vs ClassLoader.getResource
- Class.getResource vs ClassLoader.getResource
- Class.getResource vs ClassLoader.getResource .
- Class.getResource() and ClassLoader.getResource()
- Class.getResource vs ClassLoader.getResource
- Class.getResource vs ClassLoader.getResource
- Class.getResource和ClassLoader.getResource
- Class.getResource和ClassLoader.getResource
- Class.getResource和ClassLoader.getResource
- Class.getResource VS ClassLoader.getResource
- 得到blackberry中的联系人信息(j2me)
- Android PreferenceActivity 学习笔记
- Android的图片浏览源码解读
- 浮点型二分法查找
- 敢不敢? 哇 玩这么大 七夕那天第一个给你私信的朋友跟ta扮演一天情侣好吗?
- Class.getResource与ClassLoader.getResource()区别
- QTP调用win32 API 实现窗口的最小最大化
- ANT-build.xml文件详解
- Android 设置 Toast 的显示位置
- spring 2.5+junit4.4 测试基础配置
- 三个为Google+服务的网站
- C++ 容器类与Qt容器类对比 (2)连续容器类
- 经典图像边缘检测(模板法思想)——Kirsch算子
- HR绩效考核