Olá, pessoal! Tudo bem?
Fiz um exemplo de implementação de streams de leitura com Socket, porém o compilador reclama que o socket não foi fechado. Não entendo por que está acontecendo isto, pois noutros exemplos soube que ao fechar o recurso num objeto decorator mais externo, todos os demais são fechados em cascata.
Aqui está o código:
package br.com.alura.java.io.teste;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.net.Socket;
public class TesteLeituraEscrita {
public static void main(String[] args) throws IOException {
Socket sock = new Socket(); // sem parâmetros, apenas para simular.
InputStream is = sock.getInputStream();
Reader r = new InputStreamReader(is);
OutputStream os = System.out;
Writer w = new OutputStreamWriter(os);
try (BufferedReader br = new BufferedReader(r)) {
try (BufferedWriter bw = new BufferedWriter(w);) {
String linha = br.readLine();
while (linha != null) {
bw.write(linha);
bw.newLine();
linha = br.readLine();
}
}
}
}
}