一、Spring Boot默认静态文件路径
在Spring Boot中,我们可以通过静态资源文件夹来存放我们的网页、图片等资源,其中默认的静态资源文件夹是 /src/main/resources/static
。例如我们将一个名为 index.html
的网页文件放在该目录下,那我们可以通过 URL:localhost:8080/index.html
来访问该网页。
值得注意的是,如果我们不想使用默认路径,也可以通过 application.properties
文件重新指定静态资源文件夹的路径:
spring.resources.static-locations=classpath:/static/,file:/opt/files/
上述代码定义了静态资源文件夹的搜索位置,优先搜索项目的 classpath:/static/
路径,若未找到则搜索文件系统下的 /opt/files/
路径。
二、Spring Boot项目获取文件路径
在实际开发中,我们也常常需要获取项目中某个文件或目录的绝对路径,Spring Boot提供了多种方式来实现。以下是其中几种比较常见的方式:
1)利用 ClassPathResource
获取资源文件
通过 ClassPathResource
获取资源文件,可以获取存放在 classpath:
路径下的文件。下面是一个简单示例:
ClassPathResource resource = new ClassPathResource("config.properties");
String path = resource.getFile().getAbsolutePath();
上述代码实现了获取 classpath:
下的 config.properties
文件的绝对路径。
2)利用 ServletContext
获取资源文件
通过 ServletContext
获取资源文件,一般用于获取存放在 web 应用程序相对路径下的文件。下面是一个简单示例:
InputStream inputStream = request.getServletContext().getResourceAsStream("/WEB-INF/classes/file.txt");
String path = request.getServletContext().getRealPath("/WEB-INF/classes/file.txt");
上述代码实现了获取 webapp/WEB-INF/classes/file.txt
文件的流和绝对路径。
3)利用 ResourceLoader
获取资源文件
ResourceLoader
是一个高级的 Spring 特性,用于获取项目路径下的资源文件。下面是一个使用 ResourceLoader
获取 yml 配置文件的例子:
@Autowired
private ResourceLoader resourceLoader;
private String getConfig(String fileName) {
Resource resource = resourceLoader.getResource("classpath:" + fileName);
try {
InputStream inputStream = resource.getInputStream();
byte[] b = new byte[inputStream.available()];
inputStream.read(b);
return new String(b);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
上述代码实现了通过 ResourceLoader
获取 classpath:
下的 yml 配置文件。
三、小结
本文介绍了 Spring Boot 中获取文件路径的多种方式,包括获取静态文件路径和项目中一个文件或目录的绝对路径。通过这些方式,我们可以轻松地获取到所需文件的路径,从而实现对文件进行读取、写入等操作。