Qual necessidade do flush e closer em FileOutputStream e ObjectOutputStream?

Bem galera, é o seguinte tavo aqui estudando sobre Serialização, e vi em muitos tutoriais onde era ultizado o método flush e closer do FileOutputStream e ObjectOutputStream, dae só pra experimentar, não executei o método flush e closer, e mesmo assim o arquivo foi gerado normal e talz, consegui abrir ele normal com FileInputStream e ObjectInputStream!!
Então fica a pergunta, para que é utilizado o flush e closer???

Obrigado pela atenção!!!

Alexandre,

O método flush() serve para garantir o envio do último lote de bytes enviado para gravação no arquivo, já o método close() serve para fechar a stream de leitura ou gravação. Se vc não chamar o método close() sua rotina irá funcionar normalmente, entretanto você estará desperdiçando memória, uma vez que qualquer tipo de operação I/O demanda muita memória, portanto sempre após realizar gravação/ leitura de arquivos, chame o método close(), lembrando sempre de chamar o método flush() antes de close() em operações de gravação.

[quote=Rafael Sperendio]Alexandre,

O método flush() serve para garantir o envio do último lote de bytes enviado para gravação no arquivo, já o método close() serve para fechar a stream de leitura ou gravação. Se vc não chamar o método close() sua rotina irá funcionar normalmente, entretanto você estará desperdiçando memória, uma vez que qualquer tipo de operação I/O demanda muita memória, portanto sempre após realizar gravação/ leitura de arquivos, chame o método close(), lembrando sempre de chamar o método flush() antes de close() em operações de gravação.

[/quote]

Vlw… agora entendi!!!

Só uma observação. Na maioria das classes de IO (senão todas) a chamada ao método flush() é feita implicitamente quando o método close() é invocado (a chamada é feita dentro do close).

[]´s

[quote=davidbuzatto]Só uma observação. Na maioria das classes de IO (senão todas) a chamada ao método flush() é feita implicitamente quando o método close() é invocado (a chamada é feita dentro do close).

[]´s[/quote]

então que nem todas as classes precisa ficar chamando flush??? o close jah faz isso??? correto???

[quote=alexandref93][quote=davidbuzatto]Só uma observação. Na maioria das classes de IO (senão todas) a chamada ao método flush() é feita implicitamente quando o método close() é invocado (a chamada é feita dentro do close).

[]´s[/quote]

então que nem todas as classes precisa ficar chamando flush??? o close jah faz isso??? correto???[/quote]
Para ter certeza se o o flush é chamado no close vc precisa ver a documentação do método close de cada classe. Como falei, acho que todas chamam o close internamente, mas não dá p/ afirmar com 100% de certeza. Na dúvida, chame o flush depois o close como o Rafael disse.

[]´s

[quote=davidbuzatto][quote=alexandref93][quote=davidbuzatto]Só uma observação. Na maioria das classes de IO (senão todas) a chamada ao método flush() é feita implicitamente quando o método close() é invocado (a chamada é feita dentro do close).

[]´s[/quote]

então que nem todas as classes precisa ficar chamando flush??? o close jah faz isso??? correto???[/quote]
Para ter certeza se o o flush é chamado no close vc precisa ver a documentação do método close de cada classe. Como falei, acho que todas chamam o close internamente, mas não dá p/ afirmar com 100% de certeza. Na dúvida, chame o flush depois o close como o Rafael disse.

[]´s[/quote]

vlw pela atenção!!!