一、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中获取文件路径的多种方式,包括获取静态文件路径和项目中一个文件或目录的绝对路径。通过这些方式,我们可以轻松地获取到所需文件的路径,从而实现对文件进行读取、写入等操作。