关闭

class.getClassLoader().getResource()和class.getResource()的不同

1068人阅读 评论(0) 收藏 举报
分类:
1.两者都是读取配置文件的方式。前者是正规的实现,即先由class获得classLoader,再由classLoader获得文件。后者是封装的一个方法,二者的区别在哪呢?在参数上。

2.二者的参数类型都是String,假设为path。如果读一个当前包中的文件test.properties,而包名是com.xxx;前者的参数path就是“com/xxx/test.properties”,后者的参数是“test.properties”,也就是后者不会写包名,为什么呐?

3.因为后者是class自己封装的方法,他的方法内部,实现了前面包名的添加,如何获得包名的呢?当然由class获取,例如一个程序放在com.xxx包中,名字是test.java。则由Test.class.getName()方法就可以获得完整的包名加类名,然后用subString方法获得包名,再加上传入的文件名参数即可。

[java] view plaincopy
  1. /** 
  2.     * Add a package name prefix if the name is not absolute Remove leading "/" 
  3.     * if name is absolute 
  4.     */  
  5.    private String resolveName(String name) {  
  6.        if (name == null) {  
  7.            return name;  
  8.        }  
  9.        if (!name.startsWith("/")) {  
  10.            Class c = this;  
  11.            while (c.isArray()) {  
  12.                c = c.getComponentType();  
  13.            }  
  14.            String baseName = c.getName();  
  15.            int index = baseName.lastIndexOf('.');  
  16.            if (index != -1) {  
  17.                name = baseName.substring(0, index).replace('.''/')  
  18.                    +"/"+name;  
  19.            }  
  20.        } else {  
  21.            name = name.substring(1);  
  22.        }  
  23.        return name;  
  24.    }  

5.如果name不是绝对路径,就去掉“/”;如果是绝对的路径,就不要去掉“/”;当然写相对路径;可以看到后面会由calss获得baseName,再加上原参数name,返回完整的name,如果是绝对路径,删掉第一个“/”,返回即可。


1
0
查看评论

Web基础之Class与ClassLoader的getResource区别

在Web开发中经常要加载项目下的各种资源,有一种方法是用ClassLoader或者Class类提供的getResource来加载。本文将从代码上来分析两者的区别
  • sgls652709
  • sgls652709
  • 2016-11-06 18:26
  • 754

Class.getResource和ClassLoader.getResource

个人总结 Class.getResource(path)和ClassLoader.getResource(path), Class.getResource()从当前.class 文件路径查找资源,ClassLoader则是从jar包根目录查找. path是指类加载器的加载范围 ...
  • Fupengyao
  • Fupengyao
  • 2016-03-14 12:41
  • 2447

使用class.getClassLoader().getResource("")的注意事项

前几天在写一个C/S的小工具,使用class.getClassLoader().getResource("")时,发现一个问题,程序如下: package com.syj;public class ClassLoaderTest ...
  • sunyujia
  • sunyujia
  • 2007-09-24 13:25
  • 7845

关于Class.getResource和ClassLoader.getResource的路径问题

转自:http://www.cnblogs.com/yejg1212/p/3270152.html
  • yasi_xi
  • yasi_xi
  • 2014-05-09 16:55
  • 1462

java Class.getResource和ClassLoader.getResource

Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致。 例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name") 会在com.tes...
  • earbao
  • earbao
  • 2015-11-24 10:37
  • 2238

Java class.getClassLoader().getResource("")获取资源路径

在开发中经常需要获取资源文件路径,例如读写配置文件等。Java也提供很多方法来获取这些路径,下面就几种常用到的作一下讨论区分: 1、xxx.class.getClassLoader().getResource(“”).getPath(); 获取src资源文件编译后的路径(即classes路径) ...
  • ttx_laughing
  • ttx_laughing
  • 2016-10-21 11:16
  • 2176

使用Class.getResource(),ClassLoader.getResource(),ResourceBundle.getBundle ()进行资源定位

http://www.javaworld.com/article/2077352/java-se/smartly-load-your-properties.html http://stackoverflow.com/questions/676250/different-ways-of-loading...
  • hotdust
  • hotdust
  • 2016-11-02 13:46
  • 354

java中Class.getResource用法和自己老是有事没事报NullPointer错误的原因分析

原文载于:http://gavin-chen.iteye.com/blog/261151 用JAVA获取文件,听似简单,但对于很多像我这样的新人来说,还是掌握颇浅,用起来感觉颇深,大常最经常用的,就是用JAVA的File类,如要取得c:/test.txt文件,就会这样用File file = ne...
  • RockLee_1227
  • RockLee_1227
  • 2012-08-26 16:38
  • 7700

Class.getClassLoader().getResource() Class.getResource()

System.out.println(Test.class.getResource("/")); System.out.println(Test.class.getClassLoader().getResource("")); // 这两句代码...
  • u010959000
  • u010959000
  • 2014-07-29 14:28
  • 256

]XXX.class.getResource()与XXX.class.getClassLoader().getResource(url)研究

获取文件路径是很常用的操作,但在这之前你必须对url的相对路径和绝对路径有所了解。 如果我想获取工程的路径,或者说我想获取工程里某个文件应该怎么办呢? 方法就是用class获取Resource。 比如我们写个类叫XXX.java 获取资源文件就可以使用2个方法,分别是 XXX.class....
  • tywei2012
  • tywei2012
  • 2013-11-11 08:18
  • 1991
    个人资料
    • 访问:9387442次
    • 积分:78713
    • 等级:
    • 排名:第21名
    • 原创:264篇
    • 转载:2885篇
    • 译文:3篇
    • 评论:801条
    文章分类