SpringBoot读取资源目录文件的9种方式

 更新时间:2025年10月09日 10:17:28   作者:隔壁老王的代码  
文章介绍了SpringBoot项目中9种读取资源文件的方法,涵盖ClassLoader、ResourceLoader、ClassPathResource等,推荐使用通用且灵活的ClassLoader和ResourceLoader来处理资源加载需求,感兴趣的朋友跟随小编一起看看吧

1. 使用ClassLoader.getResourceAsStream()方法

可以使用类加载器来获取资源文件的输入流。该方法接受一个资源文件路径参数,返回一个InputStream对象。

InputStream inputStream = getClass().getClassLoader().getResourceAsStream("file.txt");

注意,该方法返回的资源文件路径是相对于类加载器的根路径。因此,对于资源目录下的文件,需要在文件名前加上“classpath:”导出。例如:“classpath:file.txt”。

2.使用 Class.getResourceAsStream() 方法

可以使用Class类的getResourceAsStream()方法来读取资源文件。该方法接受一个资源文件路径参数,返回一个InputStream对象。

InputStream inputStream = getClass().getResourceAsStream("/file.txt");

该返回方法的资源文件路径是相对于当前类的路径。因此,对于资源目录下的文件,需要在文件名前加上 "/" 进一步。例如:"/file.txt"。

3.使用ResourceLoader加载文件

可以使用 Spring 的 ResourceLoader 接口来加载资源文件。ResourceLoader 接口有一个 getResource() 方法,接受一个资源文件路径参数,返回一个 Resource 对象。

Resource resource = resourceLoader.getResource("classpath:file.txt");
InputStream inputStream = resource.getInputStream();

需要注意的是,需要在类中注入ResourceLoader对象,并在方法中使用。例如:

@Autowired
private ResourceLoader resourceLoader;
public void readResourceFile() throws IOException {
    Resource resource = resourceLoader.getResource("classpath:file.txt");
    InputStream inputStream = resource.getInputStream();
}

4.使用ResourceUtils加载文件

ResourceUtils 是 Spring 提供的一个工具类,用于加载资源文件。可以使用ResourceUtils.getFile()方法来获取文件对象。

File file = ResourceUtils.getFile("classpath:file.txt");

需要注意的是,该方法仅适用于本地文件系统和JAR文件。对于WAR文件或者其他类型的文件,该方法可能无法正常工作。

5.使用ApplicationContext加载文件

可以使用 ApplicationContext 的 getResource() 方法来加载资源文件。该方法接受一个资源文件路径参数,返回一个资源对象。

Resource resource = applicationContext.getResource("classpath:file.txt");
InputStream inputStream = resource.getInputStream();

需要注意的是,需要在类中注入ApplicationContext对象,并在方法中使用。例如:

@Autowired
private ApplicationContext applicationContext;
public void readResourceFile() throws IOException {
  Resource resource = applicationContext.getResource("classpath:file.txt");
  InputStream inputStream = resource.getInputStream();
}

6.使用ServletContext加载文件

可以使用 ServletContext 的 getResourceAsStream() 方法来读取资源文件。该方法接受一个资源文件路径参数,返回一个 InputStream 对象。

InputStream inputStream = servletContext.getResourceAsStream("/WEB-INF/classes/file.txt");

需要注意的是,需要在类中注入 ServletContext 对象,并在方法中使用。例如:

@Autowired
private ServletContext servletContext;
public void readResourceFile() throws IOException {
InputStream inputStream = servletContext.getResourceAsStream("/WEB-INF/classes/file.txt");
}

7.使用文件系统加载文件

可以使用 File 类来读取资源文件。需要提供完整的文件路径。

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

需要注意的是,使用该方法需要提供完整的文件路径,因此需要知道文件所在的绝对路径。

8.使用路径和文件加载文件

可以使用 Java NIO 中的 Paths and Files 类来读取资源文件。该方法需要提供完整的文件路径。

Path path = Paths.get("src/main/resources/file.txt");
InputStream inputStream = Files.newInputStream(path);

需要注意的是,使用该方法需要提供完整的文件路径,因此需要知道文件所在的绝对路径。

9.使用ClassPathResource加载文件

可以使用 Spring 提供的 ClassPathResource 类来读取资源文件。该方法需要提供资源文件的相对路径。

ClassPathResource resource = new ClassPathResource("file.txt");
InputStream inputStream = resource.getInputStream();

需要注意的是,ClassPathResource 会在类路径下查找资源文件,因此不需要提供完整的文件路径。

以上9种方式,都可以用来读取Spring Boot项目中资源目录下的文件。不同的方法适用于不同的场景,可以根据需要选择合适的方法。

推荐使用以下几种方法:

  • 使用 ClassLoader.getResourceAsStream() 方法。这是一种通用的方式,可以适用于大多数情况。
  • 使用ResourceLoader加载文件。如果使用Spring框架,可以使用ResourceLoader接口来加载资源文件。这种方式适用于大多数Spring Boot项目。
  • 使用ClassPathResource加载文件。如果只需要读取资源目录下的文件,可以使用Spring提供的ClassPathResource类来加载文件。这种方式比较简单,不需要提供完整的文件路径。

需要注意的是,使用不同的方式需要了解其适用的场景和使用方法。针对不同的项目和需求,可能需要选择不同的方式。

到此这篇关于SpringBoot读取资源目录文件的9种姿势的文章就介绍到这了,更多相关SpringBoot读取资源目录文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • idea启动项目提示端口占用的问题解决

    idea启动项目提示端口占用的问题解决

    有时候当我们使用Tomcat启动web项目时,会提示端口占用,导致启动失败,本文就来介绍一下端口占用的解决方法,具有一定的参考价值,感兴趣的可以了解下
    2023-08-08
  • IDEA中设置Run Dashboard方式

    IDEA中设置Run Dashboard方式

    这篇文章主要介绍了IDEA中设置Run Dashboard方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • springboot异步处理@NotBlank或@NotNull注释校验不生效问题

    springboot异步处理@NotBlank或@NotNull注释校验不生效问题

    这篇文章主要介绍了springboot异步处理@NotBlank或@NotNull注释校验不生效问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Java中的适配器模式详解

    Java中的适配器模式详解

    这篇文章主要介绍了Java中的适配器模式详解,适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作,需要的朋友可以参考下
    2023-09-09
  • Idea jdk版本问题解决方案

    Idea jdk版本问题解决方案

    这篇文章主要介绍了Idea jdk版本问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Spring如何通过@Lazy注解解决构造方法循环依赖问题

    Spring如何通过@Lazy注解解决构造方法循环依赖问题

    循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环,这篇文章主要给大家介绍了关于Spring如何通过@Lazy注解解决构造方法循环依赖问题的相关资料,需要的朋友可以参考下
    2023-03-03
  • 一文带你深入理解Java AbstractQueuedSynchronizer

    一文带你深入理解Java AbstractQueuedSynchronizer

    在并发编程中,锁是一种保证线程安全的方式,这篇文章主要为大家介绍了AbstractQueuedSynchronizer(AQS)的数据结构及实现原理,感兴趣的小伙伴可以了解一下
    2023-07-07
  • IDEA新建springboot项目时未生成pom.xml文件的解决操作

    IDEA新建springboot项目时未生成pom.xml文件的解决操作

    这篇文章主要给大家介绍了关于IDEA新建springboot项目时未生成pom.xml文件的解决操作方法,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02
  • Ribbon从入门到精通实战案例演示

    Ribbon从入门到精通实战案例演示

    Ribbon是Netflix开源的客户端负载均衡工具,用于微服务通信,动态获取服务实例并应用轮询、随机、权重响应时间等策略,下面通过实战案例给大家解析Ribbon的核心组件与工作原理,感兴趣的朋友一起看看吧
    2025-08-08
  • 详解Spring Bean 之间的特殊关系

    详解Spring Bean 之间的特殊关系

    在 Spring 容器中,两个 Bean 之间除了通过 <ref> 建立依赖关系外,还存在着一些特殊关系。这篇文章给大家想想介绍了Spring Bean 之间的特殊关系,非常不错,具有参考借鉴价值,需要的朋友参考下
    2018-05-05

最新评论