Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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 使用PrintWriter时为什么不将数据写入文件?_Java_Io - Fatal编程技术网

Java 使用PrintWriter时为什么不将数据写入文件?

Java 使用PrintWriter时为什么不将数据写入文件?,java,io,Java,Io,我正在使用PrintWriter将数据写入文件,但它没有像我预期的那样工作。程序已成功生成,但数据未输出到文件。这是我的密码: File source = new File("notebook.txt"); PrintWriter out = new PrintWriter(source); out.print("I hate Mondays"); 当我尝试使用另一种方法创建PrintWriter对象时,如下所示: File source = new File("notebook.txt

我正在使用PrintWriter将数据写入文件,但它没有像我预期的那样工作。程序已成功生成,但数据未输出到文件。这是我的密码:

 File source = new File("notebook.txt");
 PrintWriter out = new PrintWriter(source);
 out.print("I hate Mondays");
当我尝试使用另一种方法创建PrintWriter对象时,如下所示:

File source = new File("notebook.txt");
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(source)));
out.print("I love Fridays");
我不明白PrintWiter的构造函数有什么不同。为什么第一个块没有将数据输出到文件中

必须刷新PrintWriter才能将数据写入文件。您可以通过显式调用CloseMethod或使用try with resource`语句关闭PrintWriteIther来实现这一点:

File source = new File("notebook.txt");
try (PrintWriter out = new PrintWriter(source)) {
    out.print("I hate Mondays");
}
PrintWriter out = new PrintWriter(source);
out.print("I hate Mondays");
out.close();
或者,您可以在不使用try with resource语句的情况下使用它:

File source = new File("notebook.txt");
try (PrintWriter out = new PrintWriter(source)) {
    out.print("I hate Mondays");
}
PrintWriter out = new PrintWriter(source);
out.print("I hate Mondays");
out.close();

我建议你把这个搞错了。不管怎么说,真正的问题是你没有关闭它。最好是直接关闭它。如果需要刷新,将执行刷新。不,BufferedWriter不会隐式执行此操作。否则,这有什么意义呢?缓冲区在哪里?当我使用flush时,它工作了。但是我知道我们什么时候需要冲洗?如果你正确关闭了水流,你就不需要冲洗了。