springboot项目中,读取 resources 目录下的文件的9种方式
9 种方式
- 使用 ClassLoader.getResourceAsStream() 方法
可以使用类加载器来获取资源文件的输入流。该方法接受一个资源文件路径参数,返回一个 InputStream 对象。
注意,该方法返回的资源文件路径是相对于类加载器的根路径。因此,对于 resources 目录下的文件,需要在文件名前加上 "classpath:" 前缀。例如: "classpath:file.txt"。
- 使用 Class.getResourceAsStream() 方法
可以使用 Class 类的 getResourceAsStream() 方法来读取资源文件。该方法接受一个资源文件路径参数,返回一个 InputStream 对象。
该方法返回的资源文件路径是相对于当前类的路径。因此,对于 resources 目录下的文件,需要在文件名前加上 "/" 前缀。例如: "/file.txt"。
- 使用 ResourceLoader 加载文件
可以使用 Spring 的 ResourceLoader 接口来加载资源文件。ResourceLoader 接口有一个 getResource() 方法,接受一个资源文件路径参数,返回一个 Resource 对象。
需要注意的是,需要在类中注入 ResourceLoader 对象,并在方法中使用。例如:
- 使用 ResourceUtils 加载文件
ResourceUtils 是 Spring 提供的一个工具类,用于加载资源文件。可以使用 ResourceUtils.getFile() 方法来获取文件对象。
需要注意的是,该方法只适用于本地文件系统和 JAR 文件。对于 WAR 文件或者其他类型的文件,该方法可能无法正常工作。
- 使用 ApplicationContext 加载文件
可以使用 ApplicationContext 的 getResource() 方法来加载资源文件。该方法接受一个资源文件路径参数,返回一个 Resource 对象。
需要注意的是,需要在类中注入 ApplicationContext 对象,并在方法中使用。例如:
- 使用 ServletContext 加载文件
可以使用 ServletContext 的 getResourceAsStream() 方法来读取资源文件。该方法接受一个资源文件路径参数,返回一个 InputStream 对象。
需要注意的是,需要在类中注入 ServletContext 对象,并在方法中使用。例如:
- 使用 File System 加载文件
可以使用 File 类来读取资源文件。需要提供完整的文件路径。
需要注意的是,使用该方法需要提供完整的文件路径,因此需要知道文件所在的绝对路径。
- 使用 Paths 和 Files 加载文件
可以使用 Java NIO 中的 Paths 和 Files 类来读取资源文件。该方法需要提供完整的文件路径。
需要注意的是,使用该方法需要提供完整的文件路径,因此需要知道文件所在的绝对路径。
- 使用 ClassPathResource 加载文件
可以使用 Spring 提供的 ClassPathResource 类来读取资源文件。该方法需要提供资源文件的相对路径。
需要注意的是,ClassPathResource 会在类路径下查找资源文件,因此不需要提供完整的文件路径。
以上 9 种方式,都可以用来读取 Spring Boot 项目中 resources 目录下的文件。不同的方法适用于不同的场景,可以根据需要选择合适的方法。
实际开发中推荐
推荐使用以下几种方法:
- 使用 ClassLoader.getResourceAsStream() 方法
这是一种通用的方式,可以适用于大多数情况。
- 使用 ResourceLoader 加载文件
如果使用 Spring 框架,可以使用 ResourceLoader 接口来加载资源文件。这种方式适用于大多数 Spring Boot 项目。
- 使用 ClassPathResource 加载文件
如果只需要读取 resources 目录下的文件,可以使用 Spring 提供的 ClassPathResource 类来加载文件。这种方式比较简单,不需要提供完整的文件路径。
需要注意的是,使用不同的方式需要了解其适用的场景和使用方法。对于不同的项目和需求,可能需要选择不同的方式。
__EOF__

本文链接:https://www.cnblogs.com/caicz/p/17301789.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)