news 2026/5/12 22:21:26

springboot项目读取 resources 目录下的文件的9种方式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
springboot项目读取 resources 目录下的文件的9种方式

1. 使用 ClassLoader.getResourceAsStream() 方法

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

2.使用 Class.getResourceAsStream() 方法

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

3.使用 ResourceLoader 加载文件

@Autowired private ResourceLoader resourceLoader;

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

4.使用 ResourceUtils 加载文件

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

5. 使用 ApplicationContext 加载文件

@Autowired private ApplicationContext applicationContext;

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

6.使用 ServletContext 加载文件

@Autowired private ServletContext servletContext;

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

7. 使用 File System 加载文件

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

8. 使用 Paths 和 Files 加载文件

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

9. 使用 ClassPathResource 加载文件 (springboot项目 读取resources 推荐使用)

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

案例: 模拟springboot 装配bean

配置文件

package com.ldj.springboot.importbean.selector; import org.springframework.context.annotation.ImportSelector; import org.springframework.core.io.ClassPathResource; import org.springframework.core.type.AnnotationMetadata; import org.springframework.util.CollectionUtils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.List; /** * User: ldj * Date: 2024/8/24 * Time: 23:54 * Description: No Description */ public class MyBeanSelector implements ImportSelector { @Override public String[] selectImports(AnnotationMetadata annotationMetadata) { List<String> springBeanPaths = SpringFactoriesLoader.getSpringBeanPaths("spring.factories"); if (CollectionUtils.isEmpty(springBeanPaths)) { throw new RuntimeException("spring.factories文件 缺少配置!"); } return springBeanPaths.toArray(new String[0]); } } // 读取要注入容器的类所在路径的配置文件 class SpringFactoriesLoader { public static List<String> getSpringBeanPaths(String path) { List<String> classPaths = new LinkedList<>(); InputStreamReader inputStreamReader = null; BufferedReader bufferedReader = null; InputStream inputStream = null; String str; try { ClassPathResource classPathResource = new ClassPathResource(path); inputStream = classPathResource.getInputStream(); inputStreamReader = new InputStreamReader(inputStream); bufferedReader = new BufferedReader(inputStreamReader); while ((str = bufferedReader.readLine()) != null) { System.out.println(str); classPaths.add(str); } } catch (Exception e) { e.printStackTrace(); return null; } finally { try { if (inputStream != null) { inputStream.close(); } if (bufferedReader != null) { bufferedReader.close(); } if (inputStreamReader != null) { inputStreamReader.close(); } } catch (IOException e) { e.printStackTrace(); } } return classPaths; } } package com.ldj.springboot.importbean; import com.ldj.springboot.importbean.config.ProductConfig; import com.ldj.springboot.importbean.config.StoreConfig; import com.ldj.springboot.importbean.selector.MyBeanSelector; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Import; @Import(value = {MyBeanSelector.class}) public class ImportBeanApplication { public static void main(String[] args) { AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(ImportBeanApplication.class); System.out.println(annotationConfigApplicationContext.getBean(ProductConfig.class)); System.out.println(annotationConfigApplicationContext.getBean(StoreConfig.class)); } }

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 23:19:38

CompressO视频压缩工具:解决大文件存储与分享的终极方案

CompressO视频压缩工具&#xff1a;解决大文件存储与分享的终极方案 【免费下载链接】compressO Convert any video into a tiny size. 项目地址: https://gitcode.com/gh_mirrors/co/compressO 在数字内容日益丰富的今天&#xff0c;视频文件体积过大已成为普遍困扰。无…

作者头像 李华
网站建设 2026/5/8 11:08:27

Godot卡牌游戏框架:从概念到实现的完整开发指南

Godot卡牌游戏框架&#xff1a;从概念到实现的完整开发指南 【免费下载链接】godot-card-game-framework A framework which comes with prepared scenes and classes to kickstart your card game, as well as a powerful scripting engine to use to provide full rules enfo…

作者头像 李华
网站建设 2026/5/11 8:09:31

B站视频下载神器:零基础也能轻松掌握的4K高清下载技巧

B站视频下载神器&#xff1a;零基础也能轻松掌握的4K高清下载技巧 【免费下载链接】bilibili-downloader B站视频下载&#xff0c;支持下载大会员清晰度4K&#xff0c;持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为无法保存B站精…

作者头像 李华
网站建设 2026/5/11 0:42:00

LRCGet:离线音乐库批量歌词下载终极指南

LRCGet&#xff1a;离线音乐库批量歌词下载终极指南 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget 你是否拥有大量离线音乐文件&#xff0c;却苦于找不…

作者头像 李华
网站建设 2026/5/1 0:26:15

EdgeRemover终极指南:一键安全彻底卸载Edge浏览器

EdgeRemover终极指南&#xff1a;一键安全彻底卸载Edge浏览器 【免费下载链接】EdgeRemover PowerShell script to remove Microsoft Edge in a non-forceful manner. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover 还在为Windows系统自带的Microsoft Edge浏…

作者头像 李华
网站建设 2026/5/6 7:17:57

如何快速迁移艾尔登法环存档:EldenRingSaveCopier完整指南

如何快速迁移艾尔登法环存档&#xff1a;EldenRingSaveCopier完整指南 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 在艾尔登法环的广阔世界中&#xff0c;数百小时的游戏进度和精心培养的角色一旦丢失就是…

作者头像 李华