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即可。
相关推荐
金銀銅鐵5 分钟前
[Java] 用 CLI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
小小龙学IT25 分钟前
Python Polars 高性能数据处理引擎深度解析
开发语言·python·rust·1024程序员节
Nuanyt26 分钟前
Hot 100 刷题笔记 · 数组与哈希专题(3 题)
java·笔记·算法·leetcode·哈希算法·1024程序员节
csdn_aspnet32 分钟前
JavaScript 未排序数组中第 k 个最小/最大元素 (预期线性时间)
python
quantdash_cc32 分钟前
如何利用标的信息为研究股票池补充名称和交易所信息?
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
数字化转型分享点滴33 分钟前
机加工企业上大数据分析系统有哪些容易踩的坑?
python·1024程序员节
xieliyu.39 分钟前
【JavaEE进阶】Spring Boot 日志:从 System.out 到 @Slf4j,6 个级别 + 4 类配置一篇讲透
java·spring boot·spring·java-ee·springboot·logback·slf4j
B2_Proxy1 小时前
Scrapy 代理 IP 调度进阶:基于 Redis 与中间件的高可用架构实战
python·scrapy·1024程序员节
在世修行1 小时前
智学文枢:AI 客户端封装
python·http·ai·1024程序员节·pyside
IT_Octopus1 小时前
Apollo 配置中心入门:一所“小学校“读懂 Portal、Meta Server、Config Service
java·后端·spring