如何为PrintWriter使用flush()

我有一些像这样的代码:

PrintWriter pw = new PrintWriter(new BufferedReader(....)); for(int i=0; i<10; i++) { pw.println("a"); pw.flush();// flush each time when println()? } pw.close(); 

每个’for’语句中的flush()是否必然? 我听说flush()会在调用close()时自动调用。 如果我写这样的代码:

 PrintWriter pw = new PrintWriter(new BufferedReader(....), true); 

我不会再写pw.flush()了吗? 谢谢。

您的示例中可能不需要flush()

它的作用是确保在调用flush()之前写入writer的任何内容都写入底层流,而不是放在某个内部缓冲区中。

该方法在几种情况下派上用场:

  1. 如果另一个进程(或线程)需要在写入文件时检查该文件,则另一个进程看到所有最近的写入是很重要的。

  2. 如果写入过程可能会崩溃,那么重要的是不会丢失对文件的写入。

  3. 如果您正在写入控制台,并且需要确保每条消息在写入后立即显示。

第二个选项更好用,因为它将创建一个可自动刷新的PrintWriter对象。 如果您使用第一种情况,那么我认为在您的示例案例中不需要flush()