欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

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

来源: javaer 分享于  点击 37259 次 点评:15

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();

以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。

您可能感兴趣的文章:
  • Springboot 使用 maven-resources-plugin 打包变量替换jar没有打包进去、Jar包没有被使用的解决方法
  • Springboot基于maven打包分离lib及resource
  • Springboot @Autowired和@Resource的区别解析
  • SpringBoot中@Autowired与@Resource的区别小结
  • springboot获取resources下static目录的位置
相关栏目:

用户点评