时间:2021-05-20
一、需求场景
有时候我们需要在项目中使用一些静态资源文件,比如城市信息文件 countries.xml,在项目启动后读取其中的数据并初始化写进数据库中。
二、实现
静态资源文件 countries.xml 放在 src/main/resources 目录下
使用 Spring 的 ClassPathResource 来实现 :
Resource resource = new ClassPathResource("countries.xml");File file = resource.getFile();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("countries.xml");BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream()));说明:构造得到 resource 对象之后直接获取其输入流 resource.getInputStream()。
四、附录
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
需求使用spring-boot项目开发中,项目启动时“非常”慢的。如果每次修改代码或静态资源文件后都需要重新启动项目,这是多么痛苦的事。如何让项目又改动时即时“
本文实例讲述了javascript实现动态导入js与css等静态资源文件的方法。分享给大家供大家参考。具体实现方法如下:/***动态导入静态资源文件js/css
Android读取资源文件实例详解本文主要介绍Android读取资源文件,直接从assets读取,从Raw文件中读取,InputStream转String。以下
Android读取资源文件的方法1、放入到资源文件夹里面,也就是所创建android工程的res下面。我们可以在里面建立文件夹,放置我们要读取的文件。例如:re
本文实例讲述了ajax读取properties资源文件数据的方法。分享给大家供大家参考。具体实现方法如下:properties资源文件的内容如下:hello=e