How to use flush() for PrintWriter

2019-01-12 06:07发布

I have some codes like this:

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();

Is the flush() in each 'for' statement necessarily? I heard that flush() would auto invoke when invoke close() . If I write code like this:

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

and I wouldn't write pw.flush() anymore? Thanks.

标签: java java-io
2条回答
我只想做你的唯一
2楼-- · 2019-01-12 06:40

flush() is probably not required in your example.

What it does is ensure that anything written to the writer prior to the call to flush() is written to the underlying stream, rather than sit in some internal buffer.

The method comes in handy in several types of circumstances:

  1. If another process (or thread) needs to examine the file while it's being written to, and it's important that the other process sees all the recent writes.

  2. If the writing process might crash, and it's important that no writes to the file get lost.

  3. If you're writing to the console, and need to make sure that every message is shown as soon as it's written.

查看更多
爱情/是我丢掉的垃圾
3楼-- · 2019-01-12 06:41

The second option is better to use, as it will create an autoflushable PrintWriter object. And if you use first case, then I don't think flush() is required in your example case.

查看更多
登录 后发表回答