java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot打包后无法读取到resource下的资源文件

SpringBoot打包后无法读取到resource下的资源文件的解决

作者:早睡早起爱学习i

这篇文章主要介绍了SpringBoot打包后无法读取到resource下的资源文件的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

提示:以下是本篇文章正文内容,下面案例可供参考

一、问题描述

今天在做项目时发现对于SpringBoot获取资源文件这一块知识比较模糊,查询资料后记录以备后需。

开始想的是获取到资源文件绝对路径,然后通过IO流的方式读取对应位置文件内容,但是在打包运行时报错找不到对应位置的文件资源。

二、问题解决

开发环境可以通过下述方式来读取文件test.txt:

1. 传统Java方式:

File file = new File("src/main/resources/static/assets/test.txt");
InputStream inputStream = new InputStream(file);

这种方式开发环境可用,打成jar包后报错。

2. ResourceUtils工具类:

File file = ResourceUtils.getFile("classpath:static/assets/test.txt");
InputStream inputStream = new InputStream(file);

这种方式开发环境可用,打成jar包后报错,因为jar包中的文件结构不会从src开始,百度查询后jar包中的资源必须以流的方式来读取。

3. ClassPathResource类:

ClassPathResource classpathResource = new ClassPathResource("static/assets/test.txt");
InputStream inputStream = classpathResource.getInputStream();

这种方法 开发环境和jar包都可以使用。

三、问题总结

1. 线上内嵌的工程,我们只会放一个jar文件上去,我理解是jar里面的路径是获取不到的,jar是封闭性东西吧,不像文件夹,总不能c:/home/xx.jar/file.txt。只能通过流的方式来读取。

2. jar里面文件读取方式:

ClassPathResource classPathResource = new ClassPathResource(“test.txt”);

获取文件流:

classPathResource .getInputStream();

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文