spring项目中读取resources下的文件
spring项目中读取resources下的文件
我们都知道,spring项目经过maven打包后,可以打成jar包或可解压的war包
a. war包是需要外置的web容器去运行的,是需要先解压的
b. jar包的项目通常是内置的web容器(比如spring boot项目),运行的时候并不会对jar包进行解压操作
所以以上两种项目,在解析resources下的文件的时候会有些不同
一、war包的项目(采用外置web容器运行)
由于war包的项目在运行之前会被解压,解压后resources下的文件是真实存在在磁盘上的一个文件,
所以可以获取它的File对象和Inputstream流
例:
当前project工程的resouces目录

config.txt文件内容
phone=19198811100
username=yanchuanbin
可以通过spring提供的ResourceUtils工具或ClassPathResource方式进行读取
//第一种,通过 org.springframework.util.ResourceUtils 工具类
File file = ResourceUtils.getFile("classpath:config.txt");
//第二种,通过org.springframework.core.io.ClassPathResource 去进行读取
ClassPathResource classPathResource = new ClassPathResource("config.txt");
File file1 = classPathResource.getFile();
InputStream inputStream = classPathResource.getInputStream();
二、jar包的项目(采用内嵌的web容器运行)
由于jar包的项目通常是内嵌容器运行的,所以在运行的时候,服务器上并不会存在一个单独的Resource资源文件
这时候通过ClassPathResource的方式去获取,只能获取它的一个inputstream流,并不能获取到它的File对象
代码
ClassPathResource classPathResource = new ClassPathResource("config.txt");
Properties properties = new Properties();
properties.load(classPathResource.getInputStream());
//通过spring中 PropertiesLoaderUtils 工具类也可以将file或inputstream转成Properties对象
// Properties properties = PropertiesLoaderUtils.loadProperties(classPathResource);
//打印显示出来
properties.list(System.out);
服务器上运行jar项目
java -jar resources-test.jar
输出显示
- listing properties --
phone=19198811100
username=yanchuanbin
说明打成jar包后,能够访问资源文件里面的内容
由于在打成jar包的时候,maven会对project进行编译处理,可能会将resouces的下的静态资源文件打包成乱码
可以配置一个maven-resources-plugin插件对指定的资源文件进行过虑
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>txt</nonFilteredFileExtension>
<nonFilteredFileExtension>config</nonFilteredFileExtension>
<nonFilteredFileExtension>properties</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
spring项目中读取resources下的文件的更多相关文章
- 读取spring boot项目中resource目录下的文件
在开发中, 我们常常要将我们的配置文件或者模板文件放在我们的resource目录中. 如下 而在spring boot的项目中, 我们运行的是一个jar包, 并没有解压 所以当我们使用以下方式获取文件 ...
- Springboot 项目 无法读取resources下的mapper文件夹的.xml文件
之前学习的时候遇到的一个问题 org.springframework.beans.factory.BeanCreationException: Error creating bean with nam ...
- springboot 读取resources下的文件然后下载
记录下代码 /** * 下载模板 * * @param response * @param request */ @RequestMapping(value = "downloadTemp& ...
- ideal中项目resources下txt文件读取不到的问题。
这次做项目,原来用到了一个txt文件,在ideal中项目启动后报读取不到txt文件.项目原来是在eclipse中的. 在网上找了些文章,发现ideal中要读取到resources下的文件需要加上下面红 ...
- C# 获取文件路径,读取项目中某程序集下文件
获取文件路径 ------------------------------------------------------------------------- winform获取文件路径: stri ...
- Maven项目读取resources下文件的路径问题(getClassLoader的作用)
读取resources下文件的方法 网上有问答如下:问: new FileInputStream("src/main/resources/all.properties") new ...
- 如何读取maven项目中的resources
建立一个maven web项目,project-name/src/main下面有3个目录,java.resources.webapp java中存放java源代码,package等 resources ...
- SpringBoot项目构建成jar运行后,如何正确读取resource下的文件
SpringBoot项目构建成jar运行后,如何正确读取resource下的文件 不管你使用的是SpringBoot 1.x还是SpringBoot2.x,在开Dev环境中使用eclipse.IEAD ...
- Spring Boot 获取 java resources 下文件
Spring Boot 获取 java resources 下文件 Spring Boot 获取 resources 目录下的目录(例:获取 resources 目录下的 template 目录): ...
- Java读取classpath下的文件
写Java程序时会经常从classpath下读取文件,是时候该整理一下了,并在不断深入的过程中,陆续补充上. 现在Java project 都以maven项目居多, 比如像下面这样的一个项目结构: 编 ...
随机推荐
- 揭秘 cache 访问延迟背后的计算机原理
简介:本文介绍如何测试多级 cache 的访存延迟,以及背后蕴含的计算机原理. CPU 的 cache 往往是分多级的金字塔模型,L1 最靠近 CPU,访问延迟最小,但 cache 的容量也最小.本 ...
- 阿里云服务网格ASM集成SLS告警
简介:随着微服务的流行,微服务的架构也在不断的发展演进,Spring Cloud 与 Dubbo为代表的微服务开发框架也得到了普及和落地:在云原生时代,无侵入的服务网格(Service Mesh)开 ...
- Apache Dubbo 3.0.0 正式发布 - 全面拥抱云原生
简介: 一个新的里程碑! 一.背景 自从 Apache Dubbo 在 2011 年开源以来,在一众大规模互联网.IT公司的实践中积累了大量经验后,Dubbo 凭借对 Java 用户友好.功能丰富.治 ...
- 阿里云RDS深度定制-XA Crash Safe
简介: 近几年,随着分布式数据库系统的兴起,特别是基于MySQL分布式数据库系统,会用到XA来保证全局事务的一致性.众所周知,MySQL对XA事务的支持是比较弱的,存在很多问题.为了满足分布式数据库 ...
- [MongoDB] Mongo 表字段添加索引, 查看索引, 删除索引
查看索引: db.getCollection('xx').getIndexes(); 创建索引: # 1 代表升序,-1代表降序,name 指定索引名 db.getCollection('xx').c ...
- Vue2源码解析-源码调试与核心流程梳理图解
现在VUE3已经有一段时间了,也慢慢普及起来了.不过因为一直还在使用VUE2的原因还是去了解和学了下它的源码,毕竟VUE2也不会突然就没了是吧,且VUE3中很多原理之类的也是类似的.然后就准备把VUE ...
- postman使用中问题汇总
当用postman来通过接口造数据时,读取参数化文件中身份证字段的值读取错误. 参数文件如下 选择参数文件后预览的数据如下 身份证号码全部变成了0000结尾的 解决方案: 需要将身份证号码用引号引起来 ...
- THUWC2024&NOIWC2024游记
以 NOIWC 考试日为 Day 1 好了. Day -6 到重庆了.去报到,然后直接不去试机走了,这波主打一个自信. Day -5 THUWC Day1,四道传统题. 开 T1,一眼有一个 \(O( ...
- ES_CCS/R(二):跨集群搜索 Cross-cluster search (CCS)
跨集群搜索(cross-cluster search)使你可以针对一个或多个远程集群运行单个搜索请求. 例如,你可以使用跨集群搜索来筛选和分析存储在不同数据中心的集群中的日志数据. 示例 :在一个集群 ...
- OpenCV计算机视觉入门之图像色彩空间转换
目录 1. 引言 2. 概念 2.1 数字图像 2.2 色彩空间 3. 实践-图像读取 5. 完整代码 6. 总结 1. 引言 本文通过导入函数库.读取图像.转换图像色彩空间.缩放图像和保存图像五个步 ...