Como (re)direcionar a saída-padrão para o console?

8 respostas
andre_teprom

Olá pessoal,

Eu tinha conseguido redirecionar a saída de console para um arquivo, e isso funcionou perfeitamente :

PrintStream ps = new PrintStream( sArquivo , "UTF-8"); System.setOut(ps); // catches System.out messages System.setErr(ps); // catches error messages

Entretanto, agora não estou conseguindo reverter para a saída padrão.
Testei como abaixo, mas não funciona :

PrintStream psout = new PrintStream( System.out ); System.setOut(psout); System.setErr(psout);

Como resolver ?

+++

8 Respostas

Marky.Vasconcelos

System.out

É só uma referencia para o objeto que voce colocou com setOut, se voce alterou, quando executar o set com ele vai apenas colocar o mesmo.

Uma opção é guardar a referencia do antigo e depois trocar.

andre_teprom

Marky,

Poderia dar uma dica de como eu poderia salvar essa referencia ?
Não encontrei métodos que aparentassem realizar essa tarefa.

+++

viniciusalvess

System.out.println(“Saida padrão para console …”);

ViniGodoy
andre_teprom:
Poderia dar uma dica de como eu poderia salvar essa referencia ? Não encontrei métodos que aparentassem realizar essa tarefa.

Não é obvio?

PrintStream outAntigo = System.getOut();
PrintStream errAntigo = System.getErr();

//Agora sim, altere o out e o err
E quando quiser reverter:
System.setOut(outAntigo);
System.setErr(errAntigo);
andre_teprom

:lol:
Putz…
Agora é…valeu !!!

+++

andre_teprom

Pessoal,

Desculpem, mas deu o seguinte erro :

The method getOut() is undefined for the type System

E o pior é que o compilador não sugere nada, como se de fato não existisse esse método.
A versão do Java é 1.6.0.19

+++

Marky.Vasconcelos
PrintStream outAntigo = System.out;  
PrintStream errAntigo = System.err;
andre_teprom

Marky.Vasconcelos:
PrintStream outAntigo = System.out; PrintStream errAntigo = System.err;

Agora funcionou…
Obrigado a todos pela ajuda.

+++

Criado 21 de janeiro de 2011
Ultima resposta 21 de jan. de 2011
Respostas 8
Participantes 4