Quando utiliza entada do sistema, ou seja, System.in como parametro de entrada de dados, seja Scanner ou InputStream, não consigo escrever em um arquivo através do OutputStream > OutputStreamWriter > BufferedWriter. Porém, utilizando o mesmo código e alterando o System.in por FileInputStream, consigo pegar dados de um arquivo e copiar em outro. Além disso, se eu troco o OutputStream por PrintStream e uso o System.in como parâmetro, eu consigo copiar dados do console.
Alguem sabe explicar o problema?
Exemplo do código que não funciona:
public static void main(String[] args) throws IOException {
InputStream is = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
OutputStream os = new FileOutputStream("saida.txt");
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
String linha = br.readLine();
while (linha != null) {
bw.append(linha);
bw.newLine();
linha = br.readLine();
}
br.close();
bw.close();
}