Membro desde: 31/08/2002 09:05:07
Mensagens: 647
Localização: São Paulo - SP
Offline
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?
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
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):