如何为 PrintWriter 使用 flush()
Posted
技术标签:
【中文标题】如何为 PrintWriter 使用 flush()【英文标题】:How to use flush() for PrintWriter 【发布时间】:2012-04-13 05:05:41 【问题描述】:我有一些这样的代码:
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() 了吗?谢谢。
【问题讨论】:
【参考方案1】:flush()
在您的示例中可能不需要。
它的作用是确保在调用 flush()
之前写入写入器的任何内容都写入底层流,而不是位于某个内部缓冲区中。
该方法在几种情况下派上用场:
如果另一个进程(或线程)在写入文件时需要检查文件,并且其他进程看到所有最近的写入很重要。
如果写入过程可能会崩溃,重要的是不要丢失对文件的写入。
如果您正在向控制台写入数据,并且需要确保每条消息在写入后立即显示。
【讨论】:
另一个与问题关系不大,但浏览量接近 5K 的问题标题【参考方案2】:第二个选项更好用,因为它会创建一个可自动刷新的 PrintWriter 对象。如果您使用第一种情况,那么我认为您的示例情况不需要 flush()。
【讨论】:
以上是关于如何为 PrintWriter 使用 flush()的主要内容,如果未能解决你的问题,请参考以下文章