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下的文件的更多相关文章

  1. 读取spring boot项目中resource目录下的文件

    在开发中, 我们常常要将我们的配置文件或者模板文件放在我们的resource目录中. 如下 而在spring boot的项目中, 我们运行的是一个jar包, 并没有解压 所以当我们使用以下方式获取文件 ...

  2. Springboot 项目 无法读取resources下的mapper文件夹的.xml文件

    之前学习的时候遇到的一个问题 org.springframework.beans.factory.BeanCreationException: Error creating bean with nam ...

  3. springboot 读取resources下的文件然后下载

    记录下代码 /** * 下载模板 * * @param response * @param request */ @RequestMapping(value = "downloadTemp& ...

  4. ideal中项目resources下txt文件读取不到的问题。

    这次做项目,原来用到了一个txt文件,在ideal中项目启动后报读取不到txt文件.项目原来是在eclipse中的. 在网上找了些文章,发现ideal中要读取到resources下的文件需要加上下面红 ...

  5. C# 获取文件路径,读取项目中某程序集下文件

    获取文件路径 ------------------------------------------------------------------------- winform获取文件路径: stri ...

  6. Maven项目读取resources下文件的路径问题(getClassLoader的作用)

    读取resources下文件的方法 网上有问答如下:问: new FileInputStream("src/main/resources/all.properties") new ...

  7. 如何读取maven项目中的resources

    建立一个maven web项目,project-name/src/main下面有3个目录,java.resources.webapp java中存放java源代码,package等 resources ...

  8. SpringBoot项目构建成jar运行后,如何正确读取resource下的文件

    SpringBoot项目构建成jar运行后,如何正确读取resource下的文件 不管你使用的是SpringBoot 1.x还是SpringBoot2.x,在开Dev环境中使用eclipse.IEAD ...

  9. Spring Boot 获取 java resources 下文件

    Spring Boot 获取 java resources 下文件 Spring Boot 获取 resources 目录下的目录(例:获取 resources 目录下的 template 目录): ...

  10. Java读取classpath下的文件

    写Java程序时会经常从classpath下读取文件,是时候该整理一下了,并在不断深入的过程中,陆续补充上. 现在Java project 都以maven项目居多, 比如像下面这样的一个项目结构: 编 ...

随机推荐

  1. 阿里云何万青:南坡VS北坡,阿里云高性能计算行业实践

    ​简介:北坡模式:借助于云上大计算性能突破来提供HPC服务,切入的重点更加聚焦于云服务. 随着数字化转型的深入,行业应用对算力提出更高要求.为满足不同行业灵活的业务形态与计算需求,以云计算技术为服务模 ...

  2. 浅谈 Linux 高负载的系统化分析

    ​简介: 浅谈 Linux 高负载的系统化分析,阿里云系统组工程师杨勇通过对线上各种问题的系统化分析. 讲解 Linux Load 高如何排查的话题属于老生常谈了,但多数文章只是聚焦了几个点,缺少整体 ...

  3. [PHP] Laravel-admin 模型表格-列的显示-链接: 关联关系的跳转链接

    link 将字段显示为一个链接. // link方法不传参数时,链接的`href`和`text`都是当前列的值 $grid->column('homepage')->link(); // ...

  4. 用 SetWindowPos 方法设置一个停止响应的窗口将卡调用方

    我使用 User32 的 SetWindowPos 方法去设置一个跨进程的窗口,这个窗口是停止响应的,将让调用的 SetWindowPos 方法卡住,不继续执行逻辑.通过堆栈分析是卡在 NtUserS ...

  5. 12.prometheus监控之Domain域名过期监控

    一.域名过期时间监控 域名的监控通过domain_exporter来完成 domain_exporter:https://github.com/caarlos0/domain_exporter/rel ...

  6. WEB服务与NGINX(6)-location使用详解

    目录 1. location的详细用法 1.1 精确匹配 1.2 区分大小写 1.3 不区分大小写 1.4 匹配URI开始 1.5 测试location的优先级 1.6 location的生产使用示例 ...

  7. CSS布局概念与技术教程

    以下是一份CSS布局学习大纲,它涵盖了基本到高级的CSS布局概念和技术 引言 欢迎来到CSS教程!如果你已经掌握了HTML的基础知识,那么你即将进入一个全新的世界,通过学习CSS(Cascading ...

  8. SpringCloud解决feign调用token丢失问题

    背景讨论 feign请求 在微服务环境中,完成一个http请求,经常需要调用其他好几个服务才可以完成其功能,这种情况非常普遍,无法避免.那么就需要服务之间的通过feignClient发起请求,获取需要 ...

  9. 🐬记一次MySQL执行修改语句超时问题

    异常问题 原因分析 这个问题发生在开发环境,怀疑是提交事务时终止项目运行,没有提交该事务,造成死锁 调试该事务时时间太长,为什么说有这个原因呢,因为通过查找日志显示 The client was di ...

  10. ICESat-2 ATL03光子数据读取

    ICESat-2数据处理的方式一般为将光子数据投影到沿轨距离和高程的二维空间.如下图: ATL03数据读取 H5是一种数据存储结构,读取原理就是按照该结构获取数据,这里给出两种读取方式. ATL03的 ...