Dúvida em java.io (Scanner, InputStream...)

2 respostas Resolvido
java
W

Olá pessoal, estou com uma dúvida sobre o porque temos que fechar uma referência scanner, InputStream ou ainda FileInputStream, com close(). Seria só para forçar a ação do método? Como no caso do FileInputStream, o close() força um flush() que faz com que realmente seja escrito no arquivo.

2 Respostas

Jonas_B_a_r_r_o_s

Para liberar recursos, eles abertos ficam esperando algo acontecer. Quando eles saem de ação, será menos processamentos

D
Solucao aceita

Olá

O InputStream / OutputStream são classes para controlar o fluxo de dados, o close serve para terminar a conexão da origem com o destino dos dados. Exemplo vc já deve saber que não é possível apagar um arquivo enquanto estiver em uso, o close termina a conexão com o arquivo liberando o uso.

Alguns Stream possuem um buffer de dados, o flush serve para “liberar” estes dados. Exemplo um Stream de vídeo, se o flush for chamado na hora errada, a imagem pode sair cordada ou exibir com velocidade desordenada. O flush é chamado no close porque pode ficar algum resto de dados no buffer.

Criado 19 de junho de 2016
Ultima resposta 19 de jun. de 2016
Respostas 2
Participantes 3