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. 龙蜥社区开源 coolbpf,BPF 程序开发效率提升百倍 | 龙蜥技术

    简介: coolbpf,可以酷玩的BPF!来看看让BPF加了双翅膀的它究竟有多硬核? 文/系统运维 SIG(Special Interest Group) 引言 BPF 是一个新的动态跟踪技术,目前这 ...

  2. 服务网格 ASM 年终总结:最终用户如何使用服务网格?

    ​简介:本文不打算回顾 Istio 或是阿里云服务网格 ASM 的变化或趋势,我们来聊一聊阿里云 ASM 服务网格,它的最终用户是如何使用服务网格的. 作者:叶剑宏 背景 阿里云服务网格 ASM 于 ...

  3. [ML] 详解 ChatGLM-webui 的启动使用与 ChatGLM-6B 常见问题

      1. ChatGLM-webui 总共支持以下几个命令选项: 2. 以 windows 为例,在 PowerShell 里运行命令: # 安装依赖 pip install torch==1.13. ...

  4. [PPT] WPS 提取 PPT 中的母版到另一份 PPT 中

    1. 打开 PPT. 2. 视图 - 幻灯片母版,在第一个 ppt 上面 "鼠标右键 - 复制" 来进行拷贝. 3. 打开目标 PPT,视图 - 幻灯片模板,快捷键 Ctrl + ...

  5. 支持 dotnet 6 的 dnSpy 神器版本

    官方的 dnSpy 在 2021 时,由于某些吃瓜的原因 wtfsck 将 dnSpy 给 Archived 掉,在大佬被哄好之前,预计是不再更新.最新官方版本对 dotnet 6 的支持较弱,对于很 ...

  6. 第一讲 Cadence-于真博士课程简介

    第一讲 Cadence-于真博士课程简介 以工程化的思想来学习本课程,比较有效,从一个DSP开发板设计为例开始,做出PCB板,顺带学会Cadence软件操作,而不是仅仅学习软件. 前期准备工作,阅读配 ...

  7. vue首次缓存判断

    在向本地缓存存值前,判断localstory是否已经存在某个属性,没有就正常存,有就替换掉 created(){ if(localStorage.getItem("属性名") != ...

  8. Ubuntu 安装谷歌中文输入法

    Ubuntu 安装谷歌中文输入法 下载谷歌拼音:sudo apt-get install fcitx-googlepinyin 点击设置: 第一次打开需要点击安装: 设置完成后重启系统 点击右上角键盘 ...

  9. 大模型高效微调详解-从Adpter、PrefixTuning到LoRA

    一.背景 目前NLP主流范式是在大量通用数据上进行预训练语言模型训练,然后再针对特定下游任务进行微调,达到领域适应(迁移学习)的目的. 指令微调是预训练语言模型微调的主流范式 其目的是尽量让下游任务的 ...

  10. 【OpenVINO™】使用OpenVINO™ C# API 部署 YOLO-World实现实时开放词汇对象检测

    YOLO-World是一个融合了实时目标检测与增强现实(AR)技术的创新平台,旨在将现实世界与数字世界无缝对接.该平台以YOLO(You Only Look Once)算法为核心,实现了对视频中物体的 ...