【问题标题】:Writing to a file, where is the output file?写入文件,输出文件在哪里?
【发布时间】:2010-08-18 19:09:21
【问题描述】:
        FileWriter outFile = null;
        try {
            outFile = new FileWriter("member.txt");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
out.println("test");

运行该命令,member.txt 在哪里?我正在使用Windows Vista。 UAC 已启用,因此当我运行它时,我认为它不会写入 txt 文件。然而,txt 文件已创建,但它是空的。

【问题讨论】:

    标签: java eclipse file-io


    【解决方案1】:

    Java IO 中的相对路径是相对于当前工作目录的。在 Eclipse 中,这通常是项目根目录。您还写信给out,而不是outFile。这是一个小的重写:

        File file = new File("member.txt");
        FileWriter writer = null;
        try {
            writer = new FileWriter(file);
            writer.write("test");
        } catch (IOException e) {
            e.printStackTrace(); // I'd rather declare method with throws IOException and omit this catch.
        } finally {
            if (writer != null) try { writer.close(); } catch (IOException ignore) {}
        }
        System.out.printf("File is located at %s%n", file.getAbsolutePath());
    

    关闭是强制性的,因为它将写入的数据刷新到文件中并释放文件锁定。

    不用说,在 Java IO 中使用相对路径是一种不好的做法。如果可以,宁愿使用类路径。 ClassLoader#getResource()getResourceAsStream() 等等。

    【讨论】:

      【解决方案2】:

      如果文件创建成功(没有引发异常),它就在当前工作目录中。

      【讨论】:

        【解决方案3】:

        对于您正在执行的 Java 类,右键单击该文件并转到“运行方式 -> 运行配置...”

        在此屏幕中,转到“参数”选项卡。在屏幕底部,查找“工作目录”设置。这是运行 Java 类的目录。

        在您的示例中,您正在当前目录中创建“member.txt”,因此它将显示在您的“工作目录”设置的任何位置。

        【讨论】:

          【解决方案4】:

          这也取决于您使用的 IDE。它通常会进入 file.java 所在的同一目录。我认为像 Eclipse 和 Netbeans 这样的程序可能会将其扔到不同的目录中。

          【讨论】:

            【解决方案5】:

            如果从 Eclipse 运行,当前工作目录将是您项目的基目录(查看您的项目属性以在磁盘上找到该位置)。您应该能够通过刷新项目在 Project Explorer 中看到该文件(单击项目并按 F5)。

            您可以从“参数”选项卡下的“运行配置”对话框中指定替代工作目录。

            【讨论】:

              猜你喜欢
              • 2022-01-03
              • 2014-06-04
              • 1970-01-01
              • 1970-01-01
              • 2014-10-18
              • 1970-01-01
              • 1970-01-01
              • 2017-06-06
              • 1970-01-01
              相关资源
              最近更新 更多