java使用getResource(““)、getResourceAsStream(““)获取项目中的资源文件

本文详细介绍了在Java程序中,如何使用Class类的getResource和getResourceAsStream方法加载不同位置的资源文件,包括图像、声音及二进制数据文件。特别强调了在Eclipse IDE和jar包环境下,资源文件路径设置的差异及其影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        资源文件指的是在程序中需要使用到的图像文件、声音文件以及二进制数据文件等。java程序中通常这些资源文件会放在.class文件的上下级目录中,可以使用Class类提供了getResource("")、getResourceAsStream("")这两个方法来获取资源文件。由于使用IDE(这里使用Eclipse)运行程序与使用jar包运行程序时这两个方法返回的结果可能不同,本文主要记录了以这两种方式运行程序时获取资源文件的情况。

        (附:项目的包层次结构如下)


        对于图像、声音这类资源文件,可以使用getResource("")方法,具体如下(资源文件名为about.gif):

  • 当资源文件放在ResourceFile.class文件的同级目录中时:

        this.getClass().getResource("./about.gif"); //eclipse中运行可以找到该资源文件;jar包运行找不到该资源文件

        this.getClass().getResource("about.gif"); //eclipse中运行可以找到该资源文件;jar包运行可以找到该资源文件

        this.getClass().getResource("/resourceFileTest/about.gif"); //eclipse中运行可以找到该资源文件;jar包运行可以找到该资源文件

  • 当资源文件放在ResourceFile.class文件的下一级目录中时(下一级目录名为nextDirectory):

        this.getClass().getResource("./nextDirectory/about.gif"); //eclipse中运行可以找到该资源文件;jar包运行找不到该资源文件

        this.getClass().getResource("nextDirectory/about.gif"); //eclipse中运行可以找到该资源文件;jar包运行可以找到该资源文件

        this.getClass().getResource("/resourceFileTest/nextDirectory/about.gif"); //eclipse中运行可以找到该资源文件;jar包运行可以找到该资源文件

  • 当资源文件放在ResourceFile.class文件的上一级目录中时:

        this.getClass().getResource("../about.gif"); //eclipse中运行可以找到该资源文件;jar包运行找不到该资源文件

        this.getClass().getResource("/about.gif"); //eclipse中运行可以找到该资源文件;jar包运行可以找到该资源文件

        综上,结合API文档可以发现,当getResource方法的参数以"/"开头时,其路径为.class文件所在的根目录;而以参数"."开头的写法不推荐使用。


        对于二进制数据文件,可以使用getResourceAsStream("")方法,其结果应该与getResource("")类似,这里就不再详述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值