Как использовать flush () для PrintWriter

У меня есть несколько кодов, как это:

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

Этопромывать() в каждом утверждении «за» обязательно? Я слышал, что flush () будет автоматически вызывать при вызовеблизко() , Если я напишу код так:

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

и я бы не стал писатьpw.flush () больше? Благодарю.

Ответы на вопрос(2)

Решение Вопроса

flush() являетсявероятно не требуется в вашем примере.

Что он делает, так это гарантирует, что все, что написано автору до вызоваflush() записывается в основной поток, а не находится в каком-то внутреннем буфере.

Метод пригодится в нескольких случаях:

Если другому процессу (или потоку) необходимо проверить файл во время его записи, и важно, чтобы другой процесс увидел все последние записи.

Если процесс записи может завершиться сбоем, и важно, чтобы никакие записи в файл не терялись.

Если вы пишете на консоль, и вам необходимо убедиться, что каждое сообщение отображается, как только оно написано.

 Zach Saucier04 мар. 2014 г., 07:14
Другое название вопроса, которое имеет мало общего с вопросом, но имеет почти 5 000 просмотров.

так как он создаст самозаполняемый объект PrintWriter. И если вы используете первый случай, то я не думаю,промывать() требуется в вашем случае.

Ваш ответ на вопрос