SpringBoot打包后无法读取到resource下的资源文件的解决
目录
- 前言
- 一、问题描述
- 二、问题解决
- 三、问题总结
前言
提示:这里可以添加本文要记录的大概内容:
例编程如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、问题描述
今天在做项目时发现对于SpringBoot获取资源文件这一块知识比较模糊,查询资料后记录以备后需。
开始想的是获取到资源javascript文件绝对路径,然后通过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("classpathgIziHqob:static/assets/test.txt"); InputStream inputStream = new InputStream(file);
这种方式开发环境可用,打成jar包后报错,因为jar包中的文件结构不会从src开始,百度查询后jar包中的资源必须以流的方式来读取。
3. ClassPathResource类:
ClassPathResource classpathResource = new Cl编程客栈assPathResource("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();
以上为个人编程客栈经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论