概述
【相关学习推荐:java基础教程】
java定位资源的方法:
1, 通过Class.getResource()
定位类路径下的资源(bin/com/bbebfe/icons/sample.gif)
Class clazz = this.getClass();
URL url = clazz.getResource(imageName);
登录后复制
2, 通过ClassLoader.getResource()
定位包的根目录下的资源(bin/icons/sample.gif)
Class clazz = this.getClass();
URLClassLoader loader = (URLClassLoader)clazz.getClassLoader();
URL url = loader.getResource(imageName);
登录后复制
3, 通过ClassLoader.findResource()
提供自己定制的方式定位资源
URL url = loader.findResource(imageName);
登录后复制
那么这三种方法有那些区别, 我们应该在何时使用哪种方法呢?
1、Class.getResource()
方法
该方法实际通过该Class的Class Loader的getResource()方法来获得资源, 在调用ClassLoader的getResource()方法之前, Class.getResource()方法会对资源名称做一定的处理,构建一个该资源的绝对名称absolute name, 大意是:
+ 如果资源名称以'/'('/u002f') 开始, 则资源的绝对名称是'/'以后的部分.
如果imageName是"/icons/sample.gif", 则在这里会变成"icons/sample.gif"
+ 否则对于其他情况, 绝对名称将是如下形式(给资源名称的前面加上modified_package_name/):
modified_package_name/resource_name
(修正的包名称/资源名称)
其中修正的包名称含义是将当前对象所在的包名称中的'.'('/u002e')替换为'/'
如果ClassLoader.getResource()方法返回一个值为null的URL, 则Class.getResource()方法最终会将资源请求交给ClassLoader.getSystemResource(java.lang.String)
.
2、ClassLoader.getResource()
方法
该对资源进行查找, 资源的名称是以'/'分隔的路径, 这个方法首先查找自己的父亲ClassLoader, 由自己的父ClassLoader来查找资源(实际上, 如果父亲的父亲不是空, 则父亲仍会向上提交查找请求). 如果自己的父ClassLoader是null, 则查找Java虚拟机中内建的class loader, 并将资源请求提交给它们, 如果这些操作都失败了, 则ClassLoader会调用自己的findResource()方法来查找资源.
3、ClassLoader.findResource()
方法
该方法在内部查找指定的资源, 如果你实现了自己的Class Loader,则应该重载这个方法以自己特定的方式来查找类文件和资源.
以上就是java怎么定位资源的详细内容,更多请关注靠谱客其它相关文章!
最后
以上就是忐忑云朵为你收集整理的java怎么定位资源的全部内容,希望文章能够帮你解决java怎么定位资源所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复