微信公众号:九极客欢迎星标关注九极客,一起探讨技术与架构!


在Spring Boot项目中,经常需要读取resources目录下的文件,不论是配置文件、静态资源还是其他数据文件。本文将介绍9种不同的方式,帮助您轻松读取resources目录下的文件。

方式1: 使用ClassPathResource

importorg.springframework.core.io.ClassPathResource;importorg.springframework.core.io.Resource;importjava.io.InputStream;publicclassResourceExample{publicstaticvoidmain(String[]args)throwsIOException{Resourceresource=newClassPathResource("my-file.txt");InputStreaminputStream=resource.getInputStream();//进一步处理inputStream}}

方式2: 使用ResourceLoader

importorg.springframework.core.io.ResourceLoader;importorg.springframework.core.io.Resource;importjava.io.InputStream;importorg.springframework.beans.factory.annotation.Autowired;publicclassResourceLoaderExample{@AutowiredprivateResourceLoaderresourceLoader;publicvoidreadFile()throwsIOException{Resourceresource=resourceLoader.getResource("classpath:my-file.txt");InputStreaminputStream=resource.getInputStream();//进一步处理inputStream}}

方式3: 使用ClassLoader

importjava.io.InputStream;publicclassClassLoaderExample{publicstaticvoidmain(String[]args)throwsIOException{ClassLoaderclassLoader=ClassLoaderExample.class.getClassLoader();InputStreaminputStream=classLoader.getResourceAsStream("my-file.txt");//进一步处理inputStream}}

方式4: 使用FileCopyUtils

importorg.springframework.util.FileCopyUtils;importjava.io.InputStream;importjava.nio.charset.StandardCharsets;publicclassFileCopyUtilsExample{publicstaticvoidmain(String[]args)throwsIOException{InputStreaminputStream=FileCopyUtilsExample.class.getResourceAsStream("/my-file.txt");Stringcontent=newString(FileCopyUtils.copyToByteArray(inputStream),StandardCharsets.UTF_8);//处理content}}

方式5: 使用ResourceUtils

importorg.springframework.util.ResourceUtils;importjava.io.File;publicclassResourceUtilsExample{publicstaticvoidmain(String[]args)throwsIOException{Filefile=ResourceUtils.getFile("classpath:my-file.txt");//进一步处理file}}

方式6: 使用FileInputStream

importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;publicclassFileInputStreamExample{publicstaticvoidmain(String[]args)throwsIOException{Filefile=newFile(FileInputStreamExample.class.getClassLoader().getResource("my-file.txt").getFile());try(FileInputStreamfis=newFileInputStream(file)){//读取文件内容}}}

方式7: 使用SpringResourceLoader

importorg.springframework.context.annotation.Bean;importorg.springframework.core.io.DefaultResourceLoader;importorg.springframework.core.io.Resource;importjava.io.InputStream;publicclassSpringResourceLoaderExample{@BeanpublicDefaultResourceLoaderresourceLoader(){returnnewDefaultResourceLoader();}publicvoidreadFile()throwsIOException{Resourceresource=resourceLoader().getResource("classpath:my-file.txt");InputStreaminputStream=resource.getInputStream();//进一步处理inputStream}}

方式8: 使用ServletContext

importjavax.servlet.ServletContext;importjava.io.InputStream;importorg.springframework.beans.factory.annotation.Autowired;publicclassServletContextExample{@AutowiredprivateServletContextservletContext;publicvoidreadFile()throwsIOException{InputStreaminputStream=servletContext.getResourceAsStream("/WEB-INF/classes/my-file.txt");//进一步处理inputStream}}

方式9: 使用PathsFiles(适用于Spring Boot 2.x以上)

importorg.springframework.core.io.Resource;importorg.springframework.core.io.DefaultResourceLoader;importjava.io.IOException;importjava.nio.file.Path;importjava.nio.file.Files;importjava.nio.charset.StandardCharsets;publicclassPathsAndFilesExample{publicstaticvoidmain(String[]args)throwsIOException{DefaultResourceLoaderresourceLoader=newDefaultResourceLoader();Resourceresource=resourceLoader.getResource("classpath:my-file.txt");Pathpath=resource.getFile().toPath();Stringcontent=newString(Files.readAllBytes(path),StandardCharsets.UTF_8);//处理content}}

以上这9种方式可以让您轻松读取resources目录下的文件,选择适合您项目需求的方式,并根据示例代码来实现文件读取功能。希望这些方式能帮助您在Spring Boot项目中处理资源文件。
END


SpringBoot获取Request的三种方法,一学就会!

MySQL字符串操作函数详解

多语言国际化支持在Spring Boot中的实现

如何在Spring Boot项目中集成Activiti工作流引擎

Spring线程池ThreadPoolTaskExecutor的高效利用


微信公众号:九极客欢迎星标关注九极客,一起探讨技术与架构!

大家的点赞、收藏和评论很重要,如文章对您有帮助还请转发支持下,谢谢!

本篇文章来源于微信公众号: 九极客



微信扫描下方的二维码阅读本文

此作者没有提供个人介绍
最后更新于 2023-11-02