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

被折叠的 条评论
为什么被折叠?



