如何在java中定义相对路径

2022-08-31 17:31:45

这是我的项目结构:

here is the structure of my project

我需要阅读里面。我试图用一个相对路径这样做,如下所示:config.propertiesMyClass.java

// Code called from MyClass.java
File f1 = new File("..\\..\\..\\config.properties");  
String path = f1.getPath(); 
prop.load(new FileInputStream(path));

这给了我以下错误:

..\..\..\config.properties (The system cannot find the file specified)

如何在Java中定义相对路径?我正在使用jdk 1.6并在Windows上工作。


答案 1

试试这样的东西

String filePath = new File("").getAbsolutePath();
filePath.concat("path to the property file");

因此,您的新文件将指向创建它的路径,通常是您的项目主目录文件夹。

[编辑]

正如@cmc所说,

    String basePath = new File("").getAbsolutePath();
    System.out.println(basePath);

    String path = new File("src/main/resources/conf.properties")
                                                           .getAbsolutePath();
    System.out.println(path);

两者都给出了相同的值。


答案 2

首先,在这里查看绝对路径和相对路径之间的差异:

绝对路径始终包含查找文件所需的根元素和完整目录列表。

或者,需要将相对路径与另一个路径组合才能访问文件。

在构造函数 File(字符串路径名)中,Javadoc 的 File 类说

路径名,无论是抽象的还是字符串形式的,都可以是绝对的,也可以是相对的。

如果要获取相对路径,则必须定义从当前工作目录到文件或目录的路径。尝试使用系统属性来获取此内容。作为您绘制的图片:

String localDir = System.getProperty("user.dir");
File file = new File(localDir + "\\config.properties");

此外,您应该尽量避免使用类似的“.”,“.”。/“、”/“等类似文件位置相对于路径的位置,因为当文件移动时,更难处理。


推荐