Java 如何使用相对路径将文件写入目录
编辑:我已经想出了一个解决这个问题的办法,它非常类似于MS90的评论。因为我的工作目录是“ATM项目”,所以java只能注意到我在该目录中给出的相对路径。将我的路径名更改为“group_0331\phase1\depositions.txt”成功了,因为“group_0331”在我的当前目录中。该文件现在在phase1下的我想要的地方创建 我需要能够将该文件写入(并从中读取)与具有createAccount方法的java文件相同的目录。所以不是工作目录。此外,我不能硬编码路径名,因为该文件不会总是从同一台计算机上运行。我该怎么做Java 如何使用相对路径将文件写入目录,java,file,filepath,Java,File,Filepath,编辑:我已经想出了一个解决这个问题的办法,它非常类似于MS90的评论。因为我的工作目录是“ATM项目”,所以java只能注意到我在该目录中给出的相对路径。将我的路径名更改为“group_0331\phase1\depositions.txt”成功了,因为“group_0331”在我的当前目录中。该文件现在在phase1下的我想要的地方创建 我需要能够将该文件写入(并从中读取)与具有createAccount方法的java文件相同的目录。所以不是工作目录。此外,我不能硬编码路径名,因为该文件不会总
void createAccount(String name, String accountType){
try {
accounts = new File("accounts.txt");
Writer writer = new BufferedWriter(new FileWriter(accounts, true));
writer.write(String.format("%s \naccounts: %s", name, accounts));
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
您所要求的是不可能的:当您的程序运行时,“java”文件不存在;java将java文件编译成类文件,然后运行这些类文件 如果要从与类文件相同的位置加载accounts.txt,请使用以下命令:
public class ExampleClass {
// catching an exception and calling printStackTrace is bad code. Do not do this.
void example() throws IOException {
try (InputStream in = ClassYouAreIn.class.getResourceAsStream("accounts.txt")) {
// you can read it here.
}
}
}
你不能给它写信;类文件通常位于无法写入的位置(例如,jar文件)
“我希望在与类文件相同的位置编写文件”的概念是一个非常糟糕的想法。如果必须写入文件,请选择文件存在的合理位置,并使用该位置。一些例子:
- 用户主目录中的子目录
- 通过参数指定的目录
- 硬编码路径