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

Bla*_*ary 6 java filesystems file-io

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

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

我写这样的文件:

FileWriter fw = new FileWriter(outfile,true);
fw.write(data);
fw.close();
Run Code Online (Sandbox Code Playgroud)

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

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

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

Eri*_*ung 6

FileWriter fw = new FileWriter("./" + outfile,true);
Run Code Online (Sandbox Code Playgroud)

要么

FileWriter fw = new FileWriter("~/" + outfile,true);
Run Code Online (Sandbox Code Playgroud)

我会试试.


Ell*_*lis 5

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

}