为什么用类加载器加载配置文件,而不用IO流

文章讨论了在Java中,使用ClassLoader.getSystemResourceAsStream加载classpath下资源与直接使用IO流从项目根目录加载资源的不同。当类加载器加载时,路径基于classpath,不受模块名更改影响,而IO流方式的路径可能因模块名改变导致错误。因此,类加载器的方式在处理资源路径上更具优势。

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

InputStream stream = ClassLoader.getSystemResourceAsStream("【classpath下的资源路径】");

编译后,类加载器加载classpath路径下的文件,而IO流加载项目根目录下的资源,首先两者的路径配置就不同。但是,IO方式以项目为根目录,当我们把编译后的class目录给到客户时,模块名和模块前的路径是客户自己决定的,这时候IO流的方式的路径会出问题,比如,使用IO的方式的话,就算我们在写代码时强行指定资源的路径,因为这样包括了项目根到模块再到资源的路径,一旦把class文件给到客户,客户将模块名更改,而代码中指定的路径已经固定,就会出现路径错误。而类加载器加载的方式不会存在这种问题,因为他的跟路径在src(classpath),客户对其上层路径的操作都不会影响到类加载器根据路径对资源的正常加载。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值