在 Spring Boot 中,resources 文件夹是标准项目结构的一部分。它用于存储配置文件、静态资源和数据文件,这些文件会在运行时被打包到 classpath 中。有时,我们需要在应用程序逻辑中读取该文件夹中的文件(例如 .txt 或 .json)。本文将解释如何使用 Spring Boot 从 resources 文件夹中读取文件。
前置知识
- 对 Spring Boot 有基本了解
- 掌握 REST API 的相关知识
- 熟悉 Java I/O 操作
Resource 文件夹:
我们可以在下面的项目结构中看到 resources 文件夹。
!Resource Folder in Project Structure
示例文本文件:
我们在 Resource 文件夹中创建了一个名为 File1.txt 的文本文件,并在其中写入了一些数据。
!Example text file .png)
实现从 resources 文件夹读取文件的步骤
1. 创建一个 Spring Boot 项目
使用 Spring Initializr 创建一个新的 Spring Boot 项目,并添加以下依赖:
> dependencies {
> implementation ‘org.springframework.boot:spring-boot-starter-web‘
> compileOnly ‘org.projectlombok:lombok‘
> developmentOnly ‘org.springframework.boot:spring-boot-devtools‘
> annotationProcessor ‘org.projectlombok:lombok‘
> testImplementation ‘org.springframework.boot:spring-boot-starter-test‘
> }
2. 在 resources 文件夹中添加一个文件
在 src/main/resources 目录下,创建一个名为 File1.txt 的文本文件,并添加一些示例内容:
> Welcome to GeeksForGeeks – Spring Boot File Reading Example
3. 创建一个 Service 类
让我们创建一个 FileService 类,负责使用 Spring 的 ResourceLoader 从 resources 文件夹中读取文件。
Java
CODEBLOCK_751d77a3
- ResourceLoader 帮助我们从 classpath、文件系统或 URL 加载文件。
- 读取文件后务必关闭 BufferedReader。
- 使用 "classpath:" 前缀来访问 src/main/resources 下的文件。
4. 创建一个 REST Controller
创建一个控制器,它暴露一个 API 端点来显示文件内容。
Java
CODEBLOCK_e3feacc5
5. 运行并测试应用程序
让我们将应用程序作为 Spring Boot App 运行。它将在默认端口 8080 上启动。
现在,打开浏览器或 Postman 并访问该端点:
> http://localhost:8080/readfile
#### 输出结果:
替代方案:使用 ClassPathResource
我们还可以使用 Spring Framework 提供的 ClassPathResource 来读取文件:
Java
CODEBLOCK_cecf6456
当您不需要注入 ResourceLoader 并且更倾向于直接访问 classpath 资源时,这种方法非常有用。