获取 Maven 项目中 resources 目录的绝对地址

如何获取 resouces 目录中的某个具体文件,网上已经有很多文章进行了说明。但有时候我们需要获取 resouces 目录的绝对地址,比如在使用 FreeMarker 模板引擎时,需要设置模板加载的目录。本文就介绍三种方法。

  1. 通过相对目录和 File API 获取

代码如下:

1
2
String path = "src/main/resources/templates";
File folder = new File(path);
  1. 通过相对目录和 Java 7 以后的 Path API 获取
1
2
Path templateFolder = Paths.get("src", "main", "resources", "templates");
templateFolder.toFile()
  1. 通过指定特定文件间接获取

通过 resouces 中一个具体文件来间接获取。例如: 我们在 resources 目录下放一个名为 logback.xml 的文件,使用下面的代码

1
2
3
String resouceName = "logback.xml";
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(resouceName).getFile());

最终,通过 file.getParent(), 我们可以获取该文件所在目录(也就是 resources 目录的)的绝对地址, 通过 file.file.getParentFile() 可以获取 resources 目录的文件句柄。

最后一种方法因为没有硬编码 “src”, “main”, “resources” 这些变量,因此无论在开发阶段还是在运行阶段都可以使用,是推荐的用法

本文标题:获取 Maven 项目中 resources 目录的绝对地址

文章作者:晨星

发布时间:2020年12月21日 - 09:12

最后更新:2021年01月19日 - 15:01

原始链接:https://www.mls-tech.info/java/java-get-resource-path/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。