目录符号

./表示当前目录

../表示上级目录

/表示根目录


如有不对请指出


Class.getResource与Class.getClassLoader.getResource


这两个getResource()是使用当前ClassLoader加载资源(即资源在 Class path中),这样资源和class直接打在jar包中,避免文件路径问题.两者不同是Class的getResource()方法是从当前.class 文件路径查找资源,ClassLoader则是从jar包根目录查找.
Class.getResource()
public java.net.URL getResource(String name)查找带有给定名称的资源.查找与给定类相关的资源的规则是通过定义类的 class loader 实现的.此方法委托给此对象的类加载器.如果此对象通过引导类加载器加载,则此方法将委托给 ClassLoader.getSystemResource(java.lang.String).
在委托前,使用下面的算法从给定的资源名构造一个绝对资源名:
ClassLoader.getResource()
public URL getResource(String name)查找具有给定名称的资源.资源是可以通过类代码以与代码基无关的方式访问的一些数据(图像、声音、文本等). 资源名称是以 ‘/’ 分隔的标识资源的路径名称.
此方法首先搜索资源的父类加载器;如果父类加载器为 null,则搜索的路径就是虚拟机的内置类加载器的路径.如果搜索失败,则此方法将调用 findResource(String) 来查找资源.
两个方法的区别是资源的定义不同, 一个主要用于相对与一个object取资源,而另一个用于取相对于classpath的资源,用的是绝对路径.
在使用Class.getResourceAsStream 时,资源路径有两种方式,一种以/开头,则这样的路径是指定绝对路径,如果不以/开头,则路径是相对与这个class所在的包的.
在使用ClassLoader.getResourceAsStream时, 路径直接使用相对于classpath的绝对路径.

 

project

     |-src
          |-com.xx.test

                       |-Main.java

                       |-b.bmp

     |-resource

           |-com.icon

                       |-a.bmp

 

  
Main.class.getResource("/icon/a.bmp"); // NOT icon/a.bmp
Main.class.getResource("b.bmp");
// need to add resource/a.bmp to build path! it will be package in jar file
Main.class.getClassLoader().getResource("icon/a.bmp");
// NOT /icon/a.bmp or a.bmp
Thread.currentThread().getContextClassLoader().getResource("icon/a.bmp");

 

width="468" height="60" src="http://hxdawxyhxdawxy.iteye.com/iframe_ggbd/187" frameborder="0" scrolling="no">



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值