Java SpringBoot 打包后 获取文件 打包后找不到文件 解决方法

在SpringBoot下 本地运行获取项目下的文件是没问题的,在打包后获取则找不到文件

原因:

在Spring Boot项目中,当尝试访问项目下的文件时,本地开发环境和打包后的运行环境可能会有所不同。在本地开发时,通常可以直接通过相对路径或类路径来访问文件,因为文件就位于的项目目录中。但是,项目打包成JAR或WAR文件并部署到服务器上时,这些文件的结构会发生变化,所以需要以不同的方式来访问它们。

在Spring框架中,ResourcePatternResolver是一个接口,它允许你根据给定的模式来解析资源。PathMatchingResourcePatternResolver是这个接口的一个实现,它支持基于Ant样式的路径模式来查找资源。

当你创建一个PathMatchingResourcePatternResolver的实例时,你可以用它来解析项目内部或文件系统上的资源路径。例如,你可以用它来查找类路径(classpath)上的资源,或者查找文件系统上的资源。

上示例,说明如何使用PathMatchingResourcePatternResolver来加载类路径上的资源:

 //获取容器资源解析器
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
//获取所有匹配的文件
 Resource[] resources = resolver.getResources(filePath); //文件路径可以不写到根目录

if (resources.length > 0) {  //大于0代表找到了相关文件
	//获得文件流,因为在jar文件中,不能直接通过文件资源路径拿到文件,但是可以在jar包中拿到文件流
	//读取的文件流   todo 如果不确定是一个或者不是只需要第一个文件则可以遍历获取
	resources[0].getInputStream();  //拿到的文件流 这个时候就可以去使用他操作了哦
}
bash 复制代码
如上filePath 举例:文件在resources.file.demo.txt  则filePath =file/demo.txt即可。
相关推荐
吾名招财1 分钟前
二、基础—常用数据结构:列表、元祖、集合、字典、函数等(爬虫及数据可视化)
爬虫·python
MurphyStar4 分钟前
Jupyter无法导入库,但能在终端导入的问题
python·jupyter
虫小宝35 分钟前
如何在Java中实现批量数据处理
java·开发语言
PeterClerk35 分钟前
基于Pygame的贪吃蛇小游戏实现
开发语言·python·pygame
king8888666635 分钟前
Java中的AQS
java
冰暮流星38 分钟前
软设之类的继承与泛化,多重继承
java·开发语言
虫小宝38 分钟前
Java中的多线程与并发编程详解
java·开发语言
oNuoyi40 分钟前
定位线上同步锁仍然重复扣费的Bug定位及Redis分布式锁解决方案
java·spring boot·redis·分布式
Easonmax43 分钟前
【C++】 解决 C++ 语言报错:Undefined Reference
java·开发语言·c++
Lightning-py43 分钟前
Python使用(...)连接字符串
开发语言·python