所以我对Java有一个奇怪的问题。
我正在读写文件,所以路径对我来说很重要。我希望所有文件都是从相对路径写入和读取的(即在我的类和java文件的其余部分的文件夹中)。
我写这样的文件:FileWriter fw = new FileWriter(outfile,true);
fw.write(data);
fw.close();
其中outfile类似于'out.txt'(即我们希望输出进入的文件的名称)。
问题是,文件是在/home/me/
而不是我的其他文件的路径中创建的。
我做错了吗?或者我怎样才能将文件存储在相关目录中?
答案 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)运行