Eu realmente preciso utilizar o flush();?

Bom dia!

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?

Obrigado!

Oi,

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.

Tchauzin!

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?

Se você precisar apenas fazer a “descarga” sem finalizar a conexão, usa o flush.

Caso contrário, usa o close.

São métodos parecidos, mas que atendem casos diferentes…

Se você usar o close não precisa usar o flush…

[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.

Tchauzin!

Eu já tive problemas por fazer close() sem flush(). É o que a Lina falou, as classes não são obrigadas a dar flush() então, cada caso é um caso.

Entendi.
Obrigado pelas respostas, vou dar uma estudada mais a fundo nesta questão… valeuz.