如何在 java maven 项目的基础级别读取文本文件

How to read text file on base level of java maven project

我想将文件读入位于我的 Maven 项目基础级别的字符串变量。

在这个例子中,我试图读取 "somerando.sql" 文件。

我一直在尝试使用:

Path path = Paths.get("/myproj/somerando.sql");
String sql = new String(Files.readAllBytes(path));

但这并没有得到它。有什么方法可以让我从这里读取文件,而无需使用它在计算机上的绝对路径?

您确定没有将 eclipse 的项目路径与 OS 路径混在一起吗?

使用:

Path path = Paths.get("somerando.sql");
String sql = new String(Files.readAllBytes(path));

没有前面的斜线。请记住,除非它以斜杠开头,否则 Path API 将根据 JVM 的工作目录解析您的路径。

它不知道 Eclipse 解析文件的方式,其中根 (/) 可能被假定为相对于其工作空间。

附带说明一下,在创建未指定编码的字符串时请小心。

Maven 有一些约定,你应该尽量遵守它们。这些很有帮助。

此外,在开发之后,应用程序并不存在于 Maven 项目中,而是存在于组件中(Jar/war,等等...)。 因此,为避免绝对路径,您应该将应用程序或测试所需的文件放在匹配的类路径文件夹中。

如果您的文件用于测试,您可以将其移动到 Maven 保留的位置以满足此需求:yourMavenProject/src/test/resources

如果您的文件是为应用程序准备的,您可以将其移动到 Maven 保留的位置以满足此需求:yourMavenProject/src/main/resources

现在您可以通过以下方式访问它:

Path path = Paths.get(YourClass.class.getResource("filter.xml").toURI());