Arquivos

1 resposta
E

quando tenho várias dependências como um PrintWriter dependendo de um OutputStreamWriter que depende de um FileOutputStream devo chamar flush() um por um na ordem inversa da criação (o mesmo com close) ou só com o último já está bom como nos exemplos da Sun?

1 Resposta

T

Se você encapsula (wrap) uma Stream dentro de outra Stream (ou um Writer ou seja lá o que for), é suficiente chamar o flush ou o close da mais interna. Se você tiver a curiosidade de olhar os fontes vai ver que pelo menos para as Streams e Writers escritos pela Sun, o método close (ou flush) chama o método close (ou flush) das outras Streams (ou Writers). Não é preciso guardar uma referência para cada objeto.

Por exemplo, isto é suficiente (estou dando o exemplo com input streams e readers, mas com output é a mesma coisa):

BufferedReader br = new BufferedReader (new InputStreamReader (new FileInputStream ("teste.txt")));
br.readLine();
br.close(); //--> chama BufferedReader.close, que chama Reader.close(), etc.)
Criado 23 de maio de 2005
Ultima resposta 23 de mai. de 2005
Respostas 1
Participantes 2