如何为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的任何内容都写入底层流,而不是放在某个内部缓冲区中。
该方法在几种情况下派上用场:
-
如果另一个进程(或线程)需要在写入文件时检查该文件,则另一个进程看到所有最近的写入是很重要的。
-
如果写入过程可能会崩溃,那么重要的是不会丢失对文件的写入。
-
如果您正在写入控制台,并且需要确保每条消息在写入后立即显示。
第二个选项更好用,因为它将创建一个可自动刷新的PrintWriter对象。 如果您使用第一种情况,那么我认为在您的示例案例中不需要flush() 。