关于getResource()使用的几个问题

这篇博客够详细:http://blog.youkuaiyun.com/ak913/article/details/7399056

补充:

第一种情况:

当我们自己写的资源文件放在一个包下时,引入的第三方jar包的资源文件放在一个包下时,由于一般包的命名是不会重复的,所以在使用绝对路径时我们获取资源文件不会出错。

如下:

这个ex_c3p0-config.xml资源文件是我们自己创建的,在at.flying.dwr.spring.xml包下:

214300_xmze_2608182.png

这个同名的ex_c3p0-config.xml资源文件是引入的第三方jar包的,在at.flying.res包下:

214528_hF4N_2608182.png

执行以下测试代码:

@Test
    public void test1() {
        String url1 = DateConverter.class.getResource("/at/flying/dwr/spring/xml/ex_c3p0-config.xml").getFile();
        String url2 = DateConverter.class.getResource("/at/flying/res/ex_c3p0-config.xml").getFile();
        System.out.println("url1:" + url1);
        System.out.println("url2:" + url2);
    }

输出结果如下(黑体字):

url1:/D:/WORKSPACE/intelljIdea/SSMProjectMaven/target/classes/at/flying/dwr/spring/xml/ex_c3p0-config.xml
url2:file:/D:/OpenSource/Maven/repository/at/flying/tools/common-utils/1.0.0-RELEASE/common-utils-1.0.0-RELEASE.jar!/at/flying/res/ex_c3p0-config.xml

从输出结果我们可以看到,各自获取到了正确的ex_c3p0-config.xml资源文件。

第二种情况:

当我们自己写的资源文件在classpath根目录同时引入的第三方jar包的同名资源文件也在classpath根目录时,当我们使用getResource()方法获取该资源文件时会是怎样的呢。

当只有第三方jar包有dwr-version.properties资源文件时:

215704_Ib2M_2608182.png

执行以下测试代码:

@Test
    public void test2() {
        String url = DateConverter.class.getResource("/dwr-version.properties").getFile();
        System.out.println("url:" + url);
    }

输出结果如下(黑体字):

url:file:/D:/OpenSource/Maven/repository/org/directwebremoting/dwr/3.0.1-RELEASE/dwr-3.0.1-RELEASE.jar!/dwr-version.properties
从输出结果我们可以看到正确获取到了我们需要的资源文件。

当我们的classpath根目录下也有同名的dwr-version.properties文件时:

220300_kWxW_2608182.png

再次执行上述代码输出结果如下(黑体字):

url:/D:/WORKSPACE/intelljIdea/SSMProjectMaven/target/classes/dwr-version.properties

这时获取到的dwr-version.properties资源文件是我们自己的而不是第三方jar包的。

 

总结:

当我们自己写的资源文件跟第三方jar包的资源文件在各自的包下时,由于包名一般不同,所以即便资源文件同名我们也能获取到正确的资源文件。

当我们写的资源文件跟第三方jar包的资源文件都在classpath根目录下时,资源文件不同名时我们也可以正确获取到资源文件,但是当资源文件同名时,我们只能获取到自己写的资源文件而不能获取到第三方jar包的同名资源文件,换句话说在这种情况下,我们自己写的资源文件将会覆盖第三方jar包的同名资源文件。

转载于:https://my.oschina.net/u/2608182/blog/832942

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值