您的位置:

Spring Boot获取文件路径详解

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