news 2026/5/27 14:37:09

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/20 15:19:45

洛雪音乐助手终极使用指南:从零基础到高手速成

洛雪音乐助手终极使用指南&#xff1a;从零基础到高手速成 【免费下载链接】lx-music-desktop 一个基于 electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 想要免费收听海量音乐却苦于找不到合适的工具&#xff1f;洛雪音乐助手…

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

思源宋体终极应用指南:开源中文字体美化全攻略

思源宋体终极应用指南&#xff1a;开源中文字体美化全攻略 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 思源宋体是由Adobe与Google联合开发的开源中文字体项目&#xff0c;提供完整…

作者头像 李华
网站建设 2026/5/23 18:46:35

SpringBoot项目进行配置

目录 1.1?项目创建 2.1?项目启动 3.1 数据表与业务代码的创建 1. 数据表的创建 2. CarMapper.xml文件 3. Car.jave 4. CarService 5. CarServiceImpl 6. CarMapper 7. CarController 4.1启动项目 1. 启动Application项目 1.1项目创建 打开 IDEA&#xff0c;点击…

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

SpringBoot项目整合Knife4J

SpringBoot项目整合Knife4J 前言 为什么要使用API文档什么是API文档 Knife4j Knife4j的进化史Swagger和Knife4J的关系 SpringBoot整合Knife4j 版本适配实现步骤 1.导入依赖2.编写配置类新建一个controller进行测试启动项目 Knife4j增强配置常用注解 例子展示 实体类注解Co…

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

终极指南:突破HRSID数据集实战瓶颈

终极指南&#xff1a;突破HRSID数据集实战瓶颈 【免费下载链接】HRSID HRSID: high resolution sar images dataset for ship detection, semantic segmentation, and instance segmentation tasks. 项目地址: https://gitcode.com/gh_mirrors/hr/HRSID SAR图像分析与舰…

作者头像 李华
网站建设 2026/5/27 2:35:16

ExifToolGUI完全指南:从入门到精通元数据管理

ExifToolGUI完全指南&#xff1a;从入门到精通元数据管理 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 想要轻松管理照片和视频的元数据信息吗&#xff1f;ExifToolGUI正是你需要的工具&#xff01;这款强…

作者头像 李华