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

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

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

我这样写文件:

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

outfile就像’out.txt’(即我们希望输出进入的文件的名称)。

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

难道我做错了什么? 或者我如何获取存储在相对目录中的文件?

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

要么

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

我会试试。

工作目录是运行程序的地方,即你调用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); } 

}

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

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

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