Cómo usar flush () para PrintWriter

Tengo algunos códigos como este:

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

Es elrubor( en cada declaración 'for' necesariamente? Escuché que flush () invocaría automáticamente cuando invoquecerca(. Si escribo un código como este:

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

y no escribiría pw.flush () ¿nunca más? Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta