SpringBoot读取静态资源⽂件的⽅法
⼀、需求场景
有时候我们需要在项⽬中使⽤⼀些静态资源⽂件,⽐如城市信息⽂件 l,在项⽬启动后读取其中的数据并初始化写进数据库中。
⼆、实现
静态资源⽂件 l 放在 src/main/resources ⽬录下
使⽤ Spring 的来实现:
Resource resource = new ClassPathResource("l");
File file = File();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
ClassPathResource 类的注释如下:
Resource implementation for class path resources. Uses either a given ClassLoader or a given Class for loading resources. Supports resolution as java.io.File if the class path resource resides in the file system, but not for resources in a JAR. Always supports resolution as URL.
翻译过来就是:
类路径资源的资源实现。使⽤给定的ClassLoader或给定的类来加载资源。
如果类路径资源驻留在⽂件系统中,则⽀持解析为 java.io.File,如果是JAR中的资源则不⽀持。始终⽀持解析为URL。
三、Jar 中资源⽂件
上⾯也提到了,如果静态资源⽂件在⽂件系统⾥,则⽀持解析为 java.io.File,程序是能正常⼯作的。
到项⽬打包成 Jar 包放到服务器上运⾏就报不到资源的错误了!
解决法案是:不获取 java.io.File 对象,⽽是直接获取输⼊流:
Resource resource = new ClassPathResource("l");
BufferedReader br = new BufferedReader(new InputStream()));
说明:构造得到 resource 对象之后直接获取其输⼊流 InputStream()。
四、附录
Spring Boot access static resources missing scr/main/resources
Classpath resource not found when running as jar
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。java集合排序怎么实现
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论