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

时间:2016-11-01 13:34:07

标签: java maven

我想将一个文件读入一个位于Maven项目基础级别的String变量。

enter image description here

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

我一直在尝试使用:

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

但是没有得到它。有没有办法可以从这里读取文件而不使用它在计算机上的绝对路径?

3 个答案:

答案 0 :(得分:1)

使用:

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

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

它不了解Eclipse解析文件的方法,其中可能假定根(/)相对于其工作区。

另外,请注意创建字符串而不指定编码。

答案 1 :(得分:1)

Maven有一些约定,你应该尝试遵循它们。这些都很有帮助。

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

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

如果您的文件是针对该应用程序的,则可以将其移至Maven保留的位置以满足此需求:yourMavenProject/src/main/resources

现在您可以使用以下方式访问它:

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

答案 2 :(得分:0)

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