java中定位资源的方法有哪些?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
java定位资源的方法:1,通过【Class.getResource()】定位类路径下的资源;2,通过【ClassLoader.getResource()】定位包的根目录下的资源。
引用>
<强> java定位资源的方法:强>
1,通过<代码> Class.getResource() 代码>定位类路径下的资源(本/com/bbebfe/icons/sample.gif)
类clazz=this.getClass (); 网址URL=clazz.getResource (imageName);2,通过<代码> ClassLoader.getResource() 代码>定位包的根目录下的资源(bin/图标/sample.gif)
类clazz=this.getClass (); URLClassLoader装载机=(URLClassLoader) clazz.getClassLoader (); 网址URL=loader.getResource (imageName);3,通过<代码> ClassLoader.findResource() 代码>提供自己定制的方式定位资源
网址URL=loader.findResource (imageName);<强>那么这三种方法有那些区别,我们应该在何时使用哪种方法呢? 强>
1, <代码> Class.getResource() 代码>方法
该方法实际通过该类的类加载器的getResource()方法来获得资源,在调用类加载器的getResource()方法之前,Class.getResource()方法会对资源名称做一定的处理,构建一个该资源的绝对名称绝对的名字,大意是:
+如果资源名称以& # 39;/& # 39;(& # 39;/u002f& # 39;)开始,则资源的绝对名称是& # 39;/& # 39;以后的部分。
如果imageName是“/图标/sample.gif",则在这里会变成“图标/sample.gif"
+否则对于其他情况,绝对名称将是如下形式(给资源名称的前面加上modified_package_name/):
<代码> modified_package_name/resource_name> 代码(修正的包名称/资源名称)
其中修正的包名称含义是将当前对象所在的包名称中的& # 39;强生# 39;(& # 39;/u002e& # 39;)替换为& # 39;/& # 39;
如果ClassLoader.getResource()方法返回一个值为零的URL,则Class.getResource()方法最终会将资源请求交给<代码> ClassLoader.getSystemResource(以)代码>。
2, <代码> ClassLoader.getResource() 代码>方法
该对资源进行查找,资源的名称是以& # 39;/& # 39;分隔的路径,这个方法首先查找自己的父亲类加载器,由自己的父类加载器来查找资源(实际上,如果父亲的父亲不是空,则父亲仍会向上提交查找请求)。如果自己的父类加载器是null,则查找Java虚拟机中内建的类装入器,并将资源请求提交给它们,如果这些操作都失败了,则类加载器会调用自己的findResource()方法来查找资源。
3 <代码> ClassLoader.findResource() 代码>方法
该方法在内部查找指定的资源,如果你实现了自己的类装入器,则应该重载这个方法以自己特定的方式来查找类文件和资源。
感谢各位的阅读!看完上述内容,你们对java中定位资源的方法有哪些大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注行业资讯频道。
java中定位资源的方法有哪些