【问题标题】:How can I write a file to a directory using relative path [duplicate]如何使用相对路径将文件写入目录[重复]
【发布时间】:2019-03-02 15:58:48
【问题描述】:

编辑:我已经找到了解决这个问题的方法,它与 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();
    }
}

【问题讨论】:

  • 你建议如何将文件路径传递给程序?通过什么输入?程序是与用户交互的 GUI 吗?还是打算在调用程序时通过命令行参数获取路径?
  • 程序是一台ATM机。每当银行经理登录到ATM机为用户创建一个新帐户时;将调用此方法,所有帐户都应写入“accounts.txt”。我不知道这是否回答了你的问题。
  • 不,它没有。再问:accounts.txt 将位于何处?您打算如何将这些信息传递给程序?
  • 我有一个名为 phase1 的文件夹,其中包含项目的所有 java 文件。我想在那里创建“accounts.txt”。
  • 正如大魔术师指出的那样,您打算通过命令行还是 GUI 获取路径?

标签: java file filepath


【解决方案1】:

您的要求是不可能的:当您的程序运行时,“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.
        }
    }
}

你不能给它写信; class 文件通常位于您无法写入的位置(例如,jar 文件)。

“我希望将文件写入与我的类文件相同的位置”的想法是一个非常糟糕的主意。如果你必须写文件,选择一个合理的位置让文件存在,然后使用它。一些例子:

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

【讨论】:

    猜你喜欢
    • 2019-06-10
    • 2020-11-24
    • 2010-12-30
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    相关资源
    最近更新 更多