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");