如何用Java中的相对路径读取文件?

时间:2016-07-22 14:22:38

标签: java file

我有一个文件users.txt,文件路径为myPlugin/impl/src/main/resources/myPlugin/impl/src/main/java/com/company/myPlugin/impl/users.txt。我试图从文件路径为myPlugin/impl/src/main/java/com/company/myPlugin/impl/UserManager的Java类访问此文件。我不想硬编码路径,因为工作目录会改变。我试过了:

String path = System.getProperty("user.dir") + .....path to users.txt;

这个问题是它只在我本地运行插件时才有效。当它部署在另一台机器或服务器上时,工作目录不会包含所有文件。我真正需要的是一种仅使用myPlugin的相对路径打开文件的方法。我也试过

URL path = getClass.getResource("");

然后添加了剩下的路径,但这也没有用。是否甚至可以仅使用不依赖于当前工作目录的相对路径?当我在服务器上运行我的插件时,工作目录不包含源代码或目录结构。

1 个答案:

答案 0 :(得分:1)

文件位置由两部分组成:myPlugin/impl/src/main/resources/users.txt。第一个是构建系统(Maven)找到资源的位置。第二个是你的实际资源。

myPlugin/impl/src/main/resources下的所有(文件和目录)都将被复制到您的类路径中。

要回答您的问题,您的文件应该可以通过

访问
getClass().getClassLoader().getResource("users.txt");