SpringBoot中获取Resource目录下文件

springboot教程目录 快速入门 springboot初体验 springboot属性配置文件详解 springboot日志[logback、log4j、log4j2] web基础 springboot集成模板引擎实现web应用 springboot统一异常处理 springboot自定义视图映射 插件集成 springboot简单集成异步线程 springboot集成Swagger2构建RESTful ... 阅读详情

注:在jar包中直接使用路径方式直接读Resource目录下的文件比较难,建议使用流的方式读文件。

1 工程目录

在这里插入图片描述

2 源代码


import org.springframework.boot.system.ApplicationHome;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.ResourceUtils;

import java.io.*;

public class TestController {

    public String readFile() throws IOException {

        String path = "config/data";
        System.out.println("(一) 读取jar包文件中的数据流");

        // (一) 读取jar包文件中的数据流

        // (1) 使用getClass()取得当前对象所属的Class对象,注意需要再path前面加”/“
        // 以’/'开头是从项目的ClassPath根下获取资源,不以’/‘开头是从此类所在的包下获取资源。
        InputStream classIS = this.getClass().getResourceAsStream("/"+path);
        System.out.print("1 getClass:");
        System.out.println(classIS);

        // (2) 使用getClassLoader()获得该Class对象的类装载器
        InputStream classLoaderIS = this.getClass().getClassLoader().getResourceAsStream(path);
        System.out.print("2 getClassLoader:");
        System.out.println(classLoaderIS);

        // (3) 使用classPathResource
        ClassPathResource classPathResource = new ClassPathResource(path);
        InputStream classPathIS= classPathResource.getInputStream();
        System.out.print("3 classPathResource:");
        System.out.println(classPathIS);

        System.out.println("");


        // (二) 读取文件路径
        System.out.println("(二) 读取文件路径");

        // (1) 读取jar包同级别目录的文件
        // 获取jar包所在目录
        String jarDir = System.getProperty("user.dir");
        String jarPath = jarDir + "/" + path;
        System.out.println("1 System.getProperty: " + jarPath);
        this.readFile(jarPath);


        // !!! 注意下面的方法,在本地可以运行,在jar包中无法访问到数据文件
        // (2) 使用ResourceUtils读取工程中的文件
        String resourcePath = ResourceUtils.getURL("classpath:").getPath();
        System.out.println("2 ResourceUtils: " + resourcePath+path);
        this.readFile(resourcePath+path);

        // (3) 使用ApplicationHome读取工程中的文件
        ApplicationHome home = new ApplicationHome(this.getClass());
        String appResourcePath = home.getSource().getPath();
        System.out.println("3 ApplicationHome: "+appResourcePath+"/"+path);
        this.readFile(appResourcePath+"/"+path);

        // (4) 使用getClass读取工程中的文件
        String classPath = this.getClass().getResource("/").getPath();
        System.out.println("4 getClass: "+classPath+path);
        this.readFile(classPath+path);

        // (5) 使用getClassLoader读取工程中的文件
        String classLoaderPath = this.getClass().getClassLoader().getResource("").getPath();
        System.out.println("5 getClassLoader: "+classLoaderPath+path);
        this.readFile(classLoaderPath+"/"+path);

        return "Hello";
    }


    public void readFile(String path){
        try {
            // 按行读文件
            BufferedReader reader = new BufferedReader(new FileReader(path));
            String line = reader.readLine();
            while (line != null) {
                System.out.println(line);
                // read next line
                line = reader.readLine();
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public static void main(String[] args) throws IOException {
        TestController test = new TestController();
        test.readFile();
    }
}

3 执行结果

(一) 读取jar包文件中的数据流
1 getClass:java.io.BufferedInputStream@b97c004
2 getClassLoader:java.io.BufferedInputStream@4590c9c3
3 classPathResource:java.io.BufferedInputStream@55f3ddb1

(二) 读取文件路径
1 System.getProperty: D:\1_projects\idea\test/config/data
1111111
2 ResourceUtils: /D:/1_projects/idea/test/target/classes/config/data
1111111
3 ApplicationHome: D:\1_projects\idea\test\target\classes/config/data
1111111
4 getClass: /D:/1_projects/idea/test/target/classes/config/data
1111111
5 getClassLoader: /D:/1_projects/idea/test/target/classes/config/data
1111111
Claude Code 任务编排 头脑风暴与 疯狂拷问:Superpowers vs Grill-me 硬核对比与工程落地 Superpowers和Grill-me是AI编程中的互补工具:Superpowers提供工程化开发流程(从需求梳理到代码审查),确保规范执行;Grill-me通过持续追问帮助厘清需求,避免方向偏差。两者结合形成"构思-拷问-执行"工作流,前者负责方案生成与落地,后者专注需求审查。根据场景选择:个人项目可用Grill-me快速澄清需求,企业项目推荐Superpowers全流程,复杂开发则建议组合使用。它们分别解决"如何落地"和"是否对齐"的问题,共 阅读详情

相关推荐

RustDesk网页端远程控制实战:如何用Web Client替代传统客户端(附安全配置建议)

本文详细介绍了RustDesk网页端远程控制的实战应用,包括其核心优势、配置流程及安全加固方案。通过Web Client替代传统客户端,用户可实现跨平台无缝体验和企业级管理效率,特别适合临时协作和移动设备使用。文章还提供了JWT身份验证、LDAP集成等安全配置建议,确保网页端访问的安全性。

weixin_30836759的博客 253

Spring Boot获取resources目录下的文件的三种方式

在Spring Boot项目中,经常需要获取resources目录下的文件。这些文件可以包括配置文件、模板文件、静态资源等。本文将介绍三种常用的方法来获取resources目录下的文件。

terence的博客 1万+

html python mysql交互_干货!Python与MySQL数据库的交互实战

安装PyMySQL库如果你想要使用python操作MySQL数据库,就必须先要安装pymysql库,这个库的安装很简单,直接使用pip install pymysql;假如这种方式还是安装不上,就用如下链接找一个合适的安装包,进行安装,这个就不细说了。https://www.lfd.uci.edu/~gohlke/pythonlibs/使用Python连接MySQL数据库1)六个常用的连接参数参数...

weixin_31043555的博客 1561

SpringBoot读取resources下的文件以及resources的资源路径

SpringBoot读取resources下的文件以及resources的资源路径

风水道人 1万+

墨刀原型设计工具操作使用指南及实践操作

该指南通过异常场景处理、像素级参数说明、复杂交互示例,覆盖了墨刀操作的全细节,适合从新手到资深用户的进阶学习。结合 PlantUML 思维导图的层级化展示,可快速定位具体功能的操作要点与问题解决方法,真正实现 “照指南即可操作” 的实用价值。

hy行者勇哥的博客 4950

基于光电传感的非接触式酒精浓度检测系统设计与实现

本文详细介绍了基于光电传感技术的非接触式酒精浓度检测系统设计与实现。系统利用940nm红外LED和OPT101光电传感器,结合朗伯-比尔定律,通过STM32微控制器进行信号采集与处理,实现了快速、准确的酒精浓度测量,测量精度达±1%,适用于工业检测和便携式应用场景。

y7z8a的博客 364

【SpringBoot】三种方式,教你读取 jar 包中的 resources 目录下的文件

但部署后,项目是通过打成 jar 包运行的,里面的文件是没有实际路径的(只有相对于项目名的相对路径)。此方法默认也是从 classpath 路径(即:src 或 resources 路径下)下查找文件的,但它的路径前为什么需要加 “/” 呢?此方法默认是从 classpath 路径(即:src 或 resources 路径下)下查找文件的,所以,路径前不需要加 “/”。因为最后肯定是打包部署的,所以掌握针对后者的这种方式来读取文件是很有必要的。这个是跟要读取的文件与当前.class 文件的位置有关。...

sco5282的博客 3万+

低代码Agent开发框架使用指南(二)—Coze平台核心功能概览

本篇分享系统介绍了字节跳动推出的低代码智能体开发平台Coze。Coze以免费易用、多模型支持和便捷的跨平台发布为核心优势,显著降低了智能体开发门槛。文章详细解析了平台的六大核心功能:扩展能力边界的插件系统、增强认知的知识库、结构化数据管理的数据库、可视化图像处理的图像流、实现复杂逻辑编排的工作流,以及处理复杂任务的多智能体协作机制,全面展现了Coze平台的强大能力。

weixin_42782643的博客 1358

SpringBoot项目中读取resource目录下的文件(六种方法)

源码里还是方法三、方法四,只不过做了一些封装,更方便开发。2)启动jar包指令。

weixin_63742275的博客 2万+

三、参考比较法之城市建成区提取——提取

在正式开始提取之前,还是要继续啰嗦一下,其实基于夜间灯光数据建成区提取,可以分为好几个层次,基于县一级、市一级、省一级,很多论文的做法都是以市一级为准,也就是统计好市一级城市的每一年的统计年鉴中的建成区面积作为备用。有人可能会问为什么不以县一级,由于县一级的统计数据一般存在缺失,很难形成一个长时间序列的数据,所以一般采取的是市一级。前文也进行建议,如果确实要基于县一级进行提取可以参考前面理论介绍那篇文章中的相关建议。那么当我们确定阈值后如何将城市建成区提取出来?

端木宛白的博客家园 5401

基于Python的虚拟货币社区情绪分析与市场价格预测爬虫实现

本文探讨了如何利用Python爬虫技术获取虚拟货币社区数据,并通过情感分析预测市场价格走势。我们将使用最新的异步爬虫框架、自然语言处理技术和机器学习模型,构建一个完整的社区情绪分析系统。本文提供了详细的代码实现和理论解释,适合作为毕业设计参考。关键词:Python爬虫、虚拟货币、情感分析、价格预测、异步爬虫、机器学习爬虫框架aiohttp和httpx用于异步HTTP请求HTML解析和parsel数据存储MongoDB和Pandas用于数据处理自然语言处理库和VADER情感分析工具机器学习和。

2201_76125261的博客 522

spring boot获取resource目录下文件

例如:resource目录下: a/1.txt 获取1.txt文件的方法:

qq_44725583的博客 6539

Python跨年烟花(完整代码)

Python语言实现跨年烟花动画的完整代码。

AIGC 3万+

springboot 中获取resource目录下的文件

springboot 中获取resource目录下的文件

sys的博客 354

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

springboot应用在linux环境获取resource目录下文件报错

templates/%e3%80%90%e5%b2%97%e4%bd%8d%e6%96%87%e4%bb%b6%e3%80%91%e5%ae%89%e5%85%a8%e6%89%bf%e8%af%ba%e4%b9%a6%e6%a8%a1%e6%9d%bf.docx","code":200} 显然这不是一个正确的路径。使用的是hutool提供的获取绝对路径的类,springboot应用在window环境中获取resource目录下文件路径正常,linux环境中获取resource目录下文件路径异常。

wit_cx的博客 1263

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

经验——SpringBoot 获取 resource 目录下的文件

本人个人博客网站,欢迎访问:学教府 一、背景 介绍: 在业务开发中,我们可能会将几个文件打包成一个压缩文件,而有些文件是固定不变的,可以提前放在资源文件 resource 下面。 这时我们只需要根据相对路径来获取文件。功能看起来很简单,但是遇到的坑倒是不少啊! 二、配置 maven 在文件编译时,需要将 resource 目录下的文件拷贝到 target 目录的 classes 目录下面,这个才是运行时的文件。因为是使用了 maven ,所以此处是在 pom 文件进行配置。如下(只贴出关键点),这是最.

fanrendale的博客 4981

springboot 获取Resource目录下的文件

//文件路径,此处static前不能加/,否则解析不到 try {   //此处的static前不能加/!!!   file = ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + “static/images/user.png”); } catch (FileNotFoundException e) { e.printStackT...

tzxsc8的博客 2842

System.getProperty()方法获取系统属性的值(获取springboot项目下resource目录下的文件)

本来要上传文件到项目的resources文件夹中,如何获取项目的绝对路径? 于是乎查到了这个 String basePath = System.getProperty("user.dir"); 图片来源:https://blog.youkuaiyun.com/weixin_37139197 获取springboot项目下resource目录下的文件方法: File file = null...

优快云已弃用 8968

【已解决】Spring boot项目获取到resource目录下文件完整路径怎么获取 ?

在实际开发过程中,可能有时候,我们将文件放在resource下,在程序中需要获取到文件路径然后操作。比如,将公钥放到resource文件夹下,在程序中需要获取到这个公钥的完整路径。怎么操作?

凯哥Java的博客 3332

spring/springboot获取resource目录下的文件

1.正常情况springbot项目的resource目录下会反正项目使用到的很多文件所以这里编写一个读取demo目录如下图所示。2.复制代码直接运行。

qq_43700885的博客 731

java:springboot项目文件中Resource目录下文件路径的获取

@param path 传相对路径 比如 cert/alipay/xxx.crt。* @return 返回的路径就是放在linux服务器上的文件路径。// 判断Linux环境下与Windows环境下,获取密钥文件路径。// 创建临时文件,获取jar里面的配置文件。* linux下运行jar,通过路径获取文件的绝对路径。// resource目录下的文件名。// 获取系统类型名称。FileUtil工具类。

Hope_on的博客 3033

Springboot打包后,获取不到resource目录下资源文件的报错

1.问题: java.io.FileNotFoundException ****目录下找不到模板文件 在使用Springboot启动类启动没有错,但是打包放到tomcat、东方通这些外部容器上报错,在目标路径下找不到资源文件。 2.原代码: 配置: template_relativeJar_path: config 获取配置: @Value("${spd.template_relativeJar_path}") private String templateRelativePath; 处理逻辑,获取文件

Oxye 5834

SpringBoot获取resources目录下的文件

在 Spring Boot 项目中,获取 resources 目录中的文件路径通常涉及到访问类路径资源(classpath resources)。Spring Boot 提供了一些工具类和方法,可以方便地访问这些资源。ApplicationContext 是 Spring 框架中的一个核心接口,它是 Spring IoC 容器的实现之一,用于管理和组织应用程序中的各种 Bean,同时提供了一系列功能来支持依赖注入、AOP 等特性。同时ApplicationContext 提供了对资源的访问能力,如文件、U

pan_junbiao的博客 1220

SpringBoot获取resource目录下的Excel文件,IDEA成功,jar数据量为0

解决SpringBoot获取resource目录下的Excel文件,IDEA成功,jar数据量为0的问题

BCadillac的博客 2388

springboot 中获取resource 目录下文件相对路径

这样获取的路径经过jar包或者war包发布后也可以找到这个文件。项目结构 :这里我想获取data.xsd相对路径。

m0_49521043的博客 1059
上一篇: 安装Hive集群
下一篇: Docker安装Nacos
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值