Java中资源(resource)获取 Class.getResource() & ClassLoader.getResource()

本文介绍了Java中如何通过Class和ClassLoader获取资源,如图片、XML文件等。资源名分为绝对和相对路径,以反斜杠开头表示绝对路径。Class的方法接受绝对或相对路径,而ClassLoader则需要符合Java类名格式的资源名,从编译后的class根目录或jar包路径开始查找。

      Java中的资源可以是一个图片,xml文件,音频等等形式的文件,在开发的过程中尤其是对xml文件的使用相当频繁。在Java中,类Class和ClassLoader中提供了相应的方法去定位这些资源,如getResource()等方法。

      资源名

      完整的资源名也就是路径有绝对和相对之分,虽然他们都可以表示同一个资源文件,但使用起来确实有一定的差别。 在Java中,以反斜线(/)开始的路径被认为是绝对路径,相反,以非反斜线(/)开始的路径被称为相对路径。我们的认识中的绝对路径是没有前置的反斜线(/)的,如 ,其实在Java中的表示是有前置的反斜线(/)的。Java中获取资源的URL后真实地址是这个:

      这里还涉及到一些系统资源与非系统资源的问题(略)。

      使用Class &ClassLoader获取资源

  Class & ClassLoader获取资源的时候都需要使用到资源名。资源名传递给Class的方法时,可以使用前置反斜线(/)表示这是一个绝对路径,而不使用前置反斜线(/)的时候表示一个相对路径。资源名传递给ClassLoader的方法时,资源文件是被看作一个Java类来加载的。

      Class

      使用Class的时候,传递给它的资源名称既可以是绝对路径,也可以是相对路径。而反斜线(/)一般是代表编译后的class的根目录,而相对路径则是相对于当前调用者所属类的路径。

      ClassLoader

      只用ClassLoader的时候,资源文件被看作一个类文件来加载的,传递给ClassLoader的名称必须符合Java规范定义的名称(Binary Name),对应Java的类而言,那就是包名.类名,如果把Java的Class文件也看成一种资源的话,那么这个资源的名称就是:包名.类名.class, 例如java.lang.String.class,这种格式的资源名称都是从编译后的class根目录开始表示的(Java包的文件层次结构),而且对classpath路径上的Jar包也是适用的。对于一般意义上的资源文件,相比Java的Class文件只是文件后缀不同而已。

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值