PrintWriter 不输出到文件

PrintWriter not outputing to file

每当下一段代码是 运行 时,我都会创建新的 csv 文件,但我没有向其中写入任何内容:

PrintWriter fout     = null;

    try {

         // create file
        fout= new PrintWriter("EEGLogger.csv");
        String headerFile = "IED_COUNTER, IED_INTERPOLATED, IED_RAW_CQ, IED_AF3, IED_F7, IED_F3, IED_FC5, IED_T7, " +
                            "IED_P7, IED_O1, IED_O2, IED_P8, IED_T8, IED_FC6, IED_F4, IED_F8, IED_AF4, " + 
                            "IED_GYROX, IED_GYROY,IED_TIMESTAMP";
        // Writes the header to the file
        fout.println(headerFile);
        fout.println();
      ...

我在 finally 语句中执行了 fout.close(),但这仍然无助于将任何输出输出到文件。有什么想法吗?

你可以打开一个FileWriter

fout = new PrintWriter(new FileWriter("EEGLogger.csv"));
...
fout.flush();
fout.close()

我认为 PrintWriter 用于格式化和字符编码。 api docs states Prints formatted representations of objects to a text-output stream 以及 Methods in this class never throw I/O exceptions.

使用 FileWriter 作为参数将强制您处理任何可能发生的 IOException,因此如果文件未创建或不可写,您将立即获得此信息。

如果创建了文件而您只是在错误的位置查找文件,则可能会发生另一种情况。我建议也创建一个 File 对象,以查看文件的实际位置(您的实际工作目录是什么)

File f = new File("EEGLogger.csv");
fout = new PrintWriter(new FileWriter(f));
System.out.println(f.getAbsolutePath());

或者:

  1. 您找错了地方,即不是当前工作目录,或者
  2. 您没有对当前工作目录的写入权限。

如果您使用了 FileWriter 而没有得到 IOException,那将排除 (2)。

本周我在这里看到了大约一百万个答案和评论,声称当前工作目录等于 JAR 文件的位置,但事实并非如此。