Estou iniciando em java e me surgiu uma dúvida quando estou trabalhando com classes que implementam o método flush();,
Por que eu utilizaria? Se eu utilizar o close(); ele internamente não fará um flush e fechará o stream?
Se sim, então por que usar o flush?
Alguém uma vez me disse: Pense no flush() como um botão de descarga de um vaso sanitário, e o que acontece quando você o aperta. Em outras palavras, quando você executa o write nem sempre os dados são escritos no arquivo, e sim em algum buffer temporario. Quando você executa esse flush(), você está garantindo essa escrita.
Faz bastante sentindo o que você falou, porém, pelo que andei lendo o close(); internamente executa o flush();
Então não é mais lógico utilizar diretamente o close();?
[quote=developer.schneider]Faz bastante sentindo o que você falou, porém, pelo que andei lendo o close(); internamente executa o flush();
Então não é mais lógico utilizar diretamente o close();?
Se sim o flush “perderia” a utilidade neste caso?[/quote]
Oi,
Para ter certeza se o flush é chamado no close deve-se ler a documentação de cada classe que faz uso do método close(). Na maioria das classes de IO, a chamada do flush é feita implicitamente, porém não existe uma garantia de 100%. Na dúvida, é recomendado a utilização do flush.