Spring Boot读取classpath下文件

开发过程中,必不可少的需要读取文件,对于打包方式的不同,还会存在一些坑,比如以jar包方式部署时,文件都存在于jar包中,某些读取方式在开发工程中都可行,但是打包后,由于文件被保存在jar中,会导致读取失败。

这时就需要通过类加载器读取文件,类加载器可以读取jar包中的class类当然也可以读取jar包中的文件。

// 方法1:获取文件或流
this.getClass().getResource("/")+fileName;
this.getClass().getResourceAsStream(failName);
// 方法2:获取文件
File file = org.springframework.util.ResourceUtils.getFile("classpath:test.txt");
// 方法3:获取文件或流
ClassPathResource classPathResource = new ClassPathResource("test.txt");
classPathResource .getFile();
classPathResource .getInputStream();

// 以下方法可以读取jar包下文件
假设resources目录下有一个test.txt文件,首先获得当前的类加载器,通过类加载器读取文件

// 方法1
InputStream io = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.txt");
// 方法2
InputStream io = getClass().getClassLoader().getResourceAsStream("test.txt");

注意:Spring工具类会对classpath路径做处理,类加载器不会对classpath做处理,因此使用类加载器读取文件,路径中不要添加classpath

上一篇 Spring Cloud Eureka注册中心服务状态变更
下一篇 Spring Boot优雅停止服务的几种方法
目录
文章列表
1 PM2入门
PM2入门
2
整合Shiro出现org.quartz.Scheduler错误
整合Shiro出现org.quartz.Scheduler错误
3
CentOS下安装编译FFmpeg
CentOS下安装编译FFmpeg
4
Swift UI - 使用表格组件(UITableView)实现单列表
Swift UI - 使用表格组件(UITableView)实现单列表
5
Android Gradle构建常见问题
Android Gradle构建常见问题
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。