欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > springboot项目读取 resources 目录下的文件的9种方式

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

2025/2/25 5:43:18 来源:https://blog.csdn.net/dj1955/article/details/141507576  浏览:    关键词: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 {@Overridepublic 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));}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词