SpringBoot项目打成jar包之后无法读取资源文件【jar包文件的读取方式】

这篇具有很好参考价值的文章主要介绍了SpringBoot项目打成jar包之后无法读取资源文件【jar包文件的读取方式】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

资源文件放置位置

将文件放在resources目录下,确保资源文件被打包到jar包中
打包jar包后文件路径找不到,Java开发,spring boot,java,intellij-idea
如何判断资源是否在jar包中,只需要解压jar包,然后查询资源名称即可

修改文件的读取方式

读取文件的时候写成绝对路径,肯定是不行的,这个很容易理解。

那读取文件的时候写相对路径是否可以呢?答案也是不行,见下面解释。
这是原本的存储位置
打包jar包后文件路径找不到,Java开发,spring boot,java,intellij-idea
这是读取文件的路径
打包jar包后文件路径找不到,Java开发,spring boot,java,intellij-idea
但是解压之后发现jar包里面的文件结构和 idea 里面的文件结构是不同的,因此会报“找不到文件”错误
打包jar包后文件路径找不到,Java开发,spring boot,java,intellij-idea
修改获取文件的方式如下即可读取文件

ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("data/layout/hahahhahahah.txt");
Resource resource = resources[0];
//获得文件流,在jar文件中,不能直接通过文件资源路径拿到文件,但可以在jar包中拿到文件流
InputStream inputStream = resource.getInputStream();
String json = TxtFileUtils.read(inputStream, "GBK");

txt文件读取方式

package com.ruoyi.common.utils.txt;

import java.io.*;
import java.nio.charset.Charset;

public class TxtFileUtils {

    public static String read(InputStream fstream, String charset) throws Exception {
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream, Charset.forName(charset)));
            String s = br.readLine();
            return s;
        } finally {
            try {
                fstream.close();
            } catch (Exception e) {
            }
        }
    }

    public static String read(File f, String charset) throws Exception {
        FileInputStream fstream = new FileInputStream(f);
        try {
            int fileSize = (int) f.length();
            byte[] buffer = new byte[fileSize];
            fstream.read(buffer);
            return new String(buffer, charset);
        } finally {
            try {
                fstream.close();
            } catch (Exception e) {
            }
        }
    }

    public static void write(File f, String text, String charset) throws Exception {
        FileOutputStream fstream = new FileOutputStream(f);
        try {
            fstream.write(text.getBytes(charset));
        } finally {
            fstream.close();
        }
    }
}

修改完代码之后,clean一下再package即可文章来源地址https://www.toymoban.com/news/detail-625796.html

到了这里,关于SpringBoot项目打成jar包之后无法读取资源文件【jar包文件的读取方式】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot 打成jar包后如何获取jar包Resouces下的文件

    获取resouces下的文件使用以下代码即可读取,如果需要变成file传入其他的方法中,需要创建临时文件将输入流文件 复制到 临时文件中,并传入相关方法,最后删除临时文件即可。不能通过ClassPathResouce对象直接获取 文件File

    2024年02月19日
    浏览(26)
  • SpringBoot 读取项目中静态资源文件

    PathMatchingResourcePatternResolver是一个 Ant模式通配符 的Resource查找器,可以用来查找类路径下或者文件系统中的资源。 ❗❗❗在SpringBoot中尽量 避免使用 ResourceUtils读取资源文件。 ResourceUtils.getFile() 获取的是资源文件的绝对路径,当项目打包为jar或者war包之后部署,资源文件的绝对

    2024年02月07日
    浏览(37)
  • 打成jar包运行之后报错,java.io.FileNotFoundException:(已解决)

    今天项目测试时,遇到一个问题,因为第一次遇到,所以记录一下: 1、问题情况如下:         存放在项目resources目录下的静态资源文件,需要在接口调用时,将其copy到其他文件位置,但是打包后运行,调用时报错FileNotFoundException。         开发中代码调试没有问题,但

    2024年02月15日
    浏览(47)
  • idea把项目打成jar包步骤详解

            最近产品需要预研一个小功能,开始后在本地开发测试好之后,需要打成jar提供出去,今天弄完了,决定把这个步骤记录下来,便于以后轻车熟路。         打成jar要有mian方法的入口,所以我们在代码中需要定义一个main方法,然后通过这个main方法调用我们的核心逻

    2024年02月08日
    浏览(36)
  • SpringBoot访问静态资源和jar外部静态资源,部署前端打包后的vue项目放入静态资源里

    记录一下使用SpringBoot访问静态资源和SpringBoot打包之后的jar外部静态资源,在开发的时候,一般选择前后端分离的方式,前端使用vue 后端使用SpringBoot,通常情况下,部署都是前端通过http去请求后端资源,涉及到http请求,那么肯定需要资源的目标地址IP,一般云端部署给到I

    2024年02月09日
    浏览(59)
  • Springboot获取jar包中resources资源目录下的文件

            今天在项目中遇到一个业务场景,需要用到 resources 资源目录 下的文件,然后就在思考一个问题:         当项目打成jar后,Springboot要如何获取resources 资源目录下的文件呢?         如题,如何在项目打成jar包之后,在代码中依然能够获取到jar包中resources资源目录

    2024年02月11日
    浏览(38)
  • 解决java普通项目读取不到resouces目录下资源文件的办法

    现象如下:  可以看到resources目录已经在idea中标记成了资源目录resources root,而且target/classes目录下也编译出了resources目录下的pci.properties文件,换句话说:java在编译时是读取到了resources下的文件的。 可是为什么new File以后做路径判断时为什么返回false,找不到文件呢? 这里

    2024年02月09日
    浏览(34)
  • springboot项目(jar包)指定配置文件启动

    在JetBrains IDEA开发工具的配置 在IDEA中的program arguments配置此项 --spring.profiles.active=dev 命令 在IDEA中的VM options配置此项 -Dspring.profiles.active=dev 命令 该启动时方式会去加载Jar包中resource目录下application-dev.yml或application-dev.properties文件。同时需要注意的是通IDEA的启动方式一样。 y

    2024年02月12日
    浏览(30)
  • 记录springboot在k8s下无法读取文件问题

    //加载配置文件 File file = ResourceUtils.getFile(\\\"classpath:/template/job.yaml\\\");  /对象映射  V1Job v1Job = (V1Job) Yaml.load(file); 开发的时候使用上面的方法可以读取文件数据,但是部署到k8s容器中之后,读取文件出现报错,找不到文件。于是改成了下面的写法: 成功读取文件数据。上述两种

    2024年02月15日
    浏览(30)
  • 如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?

    在使用若依前后端分离打包部署到服务器上后,可能会出现主包无法找到从包中的文件的问题,这个问题通常是由于资源文件没有正确地打包到 jar 包中导致的。本文将介绍如何解决这个问题,包括如何在 Java 代码中访问 jar 包中的资源文件、如何将资源文件复制到系统临时目

    2024年02月22日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包