加载文件

ClassLoader().getResource (String path)

 path为相对ClassPath的路径,从ClassPath根下获取,不能以“/”开头。

//ClassLoader 获取方式  
//1.通过当前线程获取ClassLoader  
ClassLoader classLoader1 = Thread.currentThread().getContextClassLoader();  
//2.通过类获取ClassLoader  
ClassLoader classLoader2 = ClassLoaderTest.class.getClassLoader();  

Class.getResource(String path)

    path不以"/"开头时,默认是从此类包下获取资源,即相对此类所在包的路径;

    path以"/"开头时,则是从ClassPath根下获取

    Class.getResource("/") == ClassLoader().getResource("")

原因: Class.getResource和ClassLoader.getResource本质上是一样的

Class.getResource可以使用("/"),使用了 resolveName 将 / 处理了

private String resolveName(String name) {
        if (name == null) {
            return name;
        }
        if (!name.startsWith("/")) {
            Class<?> c = this;
            while (c.isArray()) {
                c = c.getComponentType();
            }
            String baseName = c.getName();
            int index = baseName.lastIndexOf('.');
            if (index != -1) {
                name = baseName.substring(0, index).replace('.', '/')
                    +"/"+name;
            }
        } else {
            name = name.substring(1);
        }
        return name;
    }

 

转载于:https://my.oschina.net/u/943316/blog/908383

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值