Qual necessidade do flush e closer em FileOutputStream e ObjectOutputStream?

6 respostas
alexandref93

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!!!

6 Respostas

R

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.

alexandref93

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.

Vlw… agora entendi!!!

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

alexandref93

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

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

davidbuzatto

alexandref93:
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

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


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

alexandref93

davidbuzatto:
alexandref93:
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

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


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

vlw pela atenção!!!

Criado 26 de setembro de 2010
Ultima resposta 27 de set. de 2010
Respostas 6
Participantes 3