SpringBoot读取resources⽬录下的⽂件
最近实验室的项⽬中遇到⼀个问题:需要读取SpringBoot项⽬中resources⽬录下的⽂件,现在把我踩过的坑写出来。
需要读取jar包中的resources⽂件的,第三种⽅法是可以的,前两个可以直接跳过
SpringBoot项⽬读取resources⽬录下的⽂件,通过查阅资料和以往经验,刚开始采⽤Java传统的读取⽂件的⽅式,发现在IDEA上是可以读取成功的,但是项⽬打包jar后在服务器上运⾏不到⽂件。于是换到另外两种⽅式,下⾯依次说明这三种⽅式:
⽬录结构:需要读取resources/static/⽂件
1. 传统java读取⽅式
File file = new File("src/main/resources/static/");springboot结构
InputStream inputStream=new FileInputStream(file);
这种⽅式在idea上运⾏是可以的,但是打成jar包是会报⽂件不到异常的
2. ResourceUtils⼯具类
上述⽅案是最先写的,这肯定是不⾏的,因为打包后的jar⽂件的⽬录结构不会从src开始,经百度后查到jar⽂件中的资源,读取时必须使⽤流的⽅式,查到可以使⽤ResourceUtils类获得⽂件流,如下:
File file = File("classpath:static/");
InputStream inputStream=new FileInputStream(file);
这种⽅式在idea上运⾏是可以的,但是打成jar包是会报⽂件不到异常的
3. ClassPathResource类
ClassPathResource classPathResource = new ClassPathResource("static/");
InputStream inputStream = InputStream();
这种⽅法在idea上运⾏是可以的,打成jar包也是可以的。
与⽅法2的区别可以看⼀下
与上⾯的项⽬相对应的jar⽂件的⽬录结构:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。