如何使用相对路径将文件写入目录

时间:2019-03-02 15:58:48

标签: java file filepath

编辑:我已经找到了解决此问题的方法,它与MS90评论非常相似。由于我的工作目录是“ ATM项目”,因此java将只能注意到该目录中我给它的相对路径。将我的路径名更改为“ group_0331 \ phase1 \ deposits.txt”可以解决问题,因为“ group_0331”在我的当前目录中。现在,在第1阶段的所需位置创建了文件。

我需要能够将此文件写入(和读取)与具有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();
    }
}

1 个答案:

答案 0 :(得分:-2)

您的要求是不可能的:程序运行时'java'文件不存在。 java将Java文件编译为类文件,然后运行这些文件。

如果要从与类文件相同的位置加载account.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文件)。

“我希望在与班级文件相同的位置写入文件”这一概念是一个非常糟糕的主意。如果必须写入文件,请选择一个合理的位置以使该文件存在,并使用该位置。一些例子:

  • 用户主目录中的子目录。
  • 通过参数指定的目录。
  • 硬编码路径。