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