Java中Class类的getResource()和getResourceAsStream()方法的使用

说道用JAVA获取文件,对于很多像我这样的人来说,肯定会第一个想到用JAVA的File类,如要取得D:/1.txt文件,就会这样用:

File file = new File("c:/test.txt");

这样用有什么问题,相信大家都知道,就是路径硬编码,如果换到其他的运行环境下,这样写肯定是失败的,对于JAVA来说,代码应该做到一次编译,到处可用,所以,我们应该尽量避免使用硬编码,更多的直接使用绝对路径。

除了Flie类,我们有什么方法可以更好地获得文件呢?当然有,那就是Class.getResource()与Class.getResourceAsStream()方法,但很多人还是不太懂它的用法,因为很多人都不知道应该传怎么样的参数给它在此仅给不会或者还不是很熟的人解释一点点。

首先我们看下JDK_API文档,
这里写图片描述

文档的描述有点拗口,大致的意思就是通过传入的文件名去加载对应文件,难点就在于”/”这个斜杠加与不加的区别,现在我就以更加明了的方式讲解我对它的理解。

比如我们有以下目录
这里写图片描述
在上面的目录中,有一个src目录,那么,我们在Test类中应该如何分别获得
file1.txt file2.txt 这两个文件呢?

其中file1.txt可以通过这两种方式来获取:
方法一:

File file1 = new File(Test.class.getResource("file1.txt").getFile());

方法二:

File file1 = new File(Test.class.getResource("/com/file1.txt").getFile());

file2.txt获取方法:

File file4 = new File(Test.class.getResource("/file2.txt").getFile());

看到这里大家应该明白,获取不同路径下文件该传入什么参数了吧。当传入的参数是没有”/”的时候,获取的是当前类所在包下的对应文件。而当参数带有”/”,则是从ClassPath根目录下获取文件。该方法的本质其实只是通过传入path构造一个绝对路径,最终还是由ClassLoader获取资源。

还有一个getResourceAsStream()方法,参数是与getResouce()方法是一样的,它相当于你用getResource()取得File文件后,再new InputStream(file)获取到输入流。

这两个方法最常用到的地方就是读取被配置文件,如数据库配置文件,日志配置文件等。

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值