Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用相对路径将文件写入目录_Java_File_Filepath - Fatal编程技术网

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

Java 如何使用相对路径将文件写入目录,java,file,filepath,Java,File,Filepath,编辑:我已经想出了一个解决这个问题的办法,它非常类似于MS90的评论。因为我的工作目录是“ATM项目”,所以java只能注意到我在该目录中给出的相对路径。将我的路径名更改为“group_0331\phase1\depositions.txt”成功了,因为“group_0331”在我的当前目录中。该文件现在在phase1下的我想要的地方创建 我需要能够将该文件写入(并从中读取)与具有createAccount方法的java文件相同的目录。所以不是工作目录。此外,我不能硬编码路径名,因为该文件不会总

编辑:我已经想出了一个解决这个问题的办法,它非常类似于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文件)

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

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

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