我想将一个文件读入一个位于Maven项目基础级别的String变量。
在这个例子中,我试图阅读" somerando.sql"文件。
我一直在尝试使用:
Path path = Paths.get("/myproj/somerando.sql");
String sql = new String(Files.readAllBytes(path));
但是没有得到它。有没有办法可以从这里读取文件而不使用它在计算机上的绝对路径?
答案 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路径混合在一起吗?