java读取 被引用依赖jar包中的资源文件

2020-06-28 08:52:37 | 编辑

1.当需要读取src/resource下面的资源文件时,一般我们先获取src的绝对文件路径

​​​​​​​this.getClass().getClassLoader().getResource("").getPath();

得到的是 ClassPath的绝对URI路径(如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/)。
然后再拼接文件名称,然后用流读取,这样很简单。

2.but,在使用spring boot框架的时候,我们打的是jar包,资源文件也在jar包里面,我们从系统路径就读取不到了
只能使用classLoader直接读取文件流

InputStream fileInputStream=this.getClass().getClassLoader().getResourceAsStream("smile.png");


3.如果你的jar包被引用到另外一个项目,上面的方法还是会读取另外一个项目的资源文件,要获取本jar包中的文件只能这样写

InputStream fileInputStream=this.getClass().getProtectionDomain().getClassLoader().getResourceAsStream("smile.png");

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号