如何使用相对路径而不是绝对路径?

时间:2010-11-17 23:23:46

标签: java file-io filesystems

所以我对Java有一个奇怪的问题。

我正在读写文件,所以路径对我来说很重要。我希望所有文件都是从相对路径写入和读取的(即在我的类和java文件的其余部分的文件夹中)。

我写这样的文件:

FileWriter fw = new FileWriter(outfile,true);
fw.write(data);
fw.close();

其中outfile类似于'out.txt'(即我们希望输出进入的文件的名称)。

问题是,文件是在/home/me/而不是我的其他文件的路径中创建的。

我做错了吗?或者我怎样才能将文件存储在相关目录中?

4 个答案:

答案 0 :(得分:5)

FileWriter fw = new FileWriter("./" + outfile,true);

FileWriter fw = new FileWriter("~/" + outfile,true);

我会尝试。

答案 1 :(得分:4)

工作目录是您运行程序的地方,即您调用java YourClass的位置,因此当您想要编写相对于正在执行的类的文件时,您必须知道当前目录并附加相对路径,例如:

因此,如果你有一个类test.YourClass,你从源根运行应用程序,即

java test.YourClass

您可以从user.dir系统属性和类包名称中找到类文件所在目录的绝对路径,如下所示:

public class YourClass {

public void printPath() {
    String path = String.format("%s/%s", System.getProperty("user.dir"), this.getClass().getPackage().getName().replace(".", "/"));
    System.out.println(path);
}

}

答案 2 :(得分:3)

Java将保存相对于当前工作目录的文件。当你运行程序时,你在你的主目录中吗?

如果您总是希望相对于Java文件的位置保存文件而当前工作目录,则需要找到该目录并在其前面添加以获取绝对路径。

答案 3 :(得分:0)

在命令行上设置user.dir属性,或者从你想要的所有目录(通过cd-ing)运行