System.out em arquivo

9 respostas
H

Pessoal tem como eu configurar para que todas as saidas do System.out.println() escrevam em um arquivo em vez do terminal?

9 Respostas

afdestro

nao…
pra isso vc tem q usar classes como FileWriter…
;D

H

eu sei usando FileWritter
é pq fiz um programa e coloco varios System.out.println() no meio para me mostrar o que aconteceu.

Dai tenho q coloca ele para rodar de meia noite e ver o q aconteceu de manha. Dai queria aproveitar essa println q tinha colocado mas com essa saida sendo em um arquivo de log por exemplo.

Nao tem condicoes de fazer isso?

T

Acho que é System.setOut, mas é bom olhar o JavaDoc.

afdestro

R

Tem sim…Faça o seguinte.

Utilize a classe FileOutputStream e PrintStream.

FileOutputStream fout = new FileOutputStream(f.out);

PrintStream printst = new PrintStream(fout);

System.setOut(printst);

Assim, tudo que for jogado no System.out.println será gravado no seu arquivo.

H

afdestro é isso que quero
só nao queria ter mudar todas os comandos que já estavam lá
entendeu?

vou olhar a documentação do System.setOut

valeu galera

afdestro

uhmmm… então…

PrintStream out = new PrintStream(new File("c://teste.txt")); System.setOut(out); System.out.println("testando");

cassio

Hum… Se quiser manter as duas opçòes, tanto saída para o arquivo quanto saída na tela, podendo escolher entre um ou outro conforme desejar, pode definir o stardard output na linha de comando

java -cp . suaClasse > seu_arquivo_de_saida.txt

O operador “>” aqui redireciona todas as saídas que seriam no console (com exceção de saídas do tipo System.err.println(), por exemplo) para o arquivo informado. Vc pode passar o caminho absoluto do arquivo tbm, caso queria gravá-lo em outro diretório.
Usando o “>” vc vai sobrescrever o arquivo sempre que rodar o programa. Caso queria ir anexando novo conteúdo no arquivo a cada vez que executar seu programa, troque o “>” por “>>”.
Isso funciona tanto no linux quanto no windows.

H

Era justamente isso que queria.
Mas fiz de outra forma e deu certo tb. E melhor ainda pq cria um arquivo de log para cada execução.

File arquivo, diretorio;
        
        try {
            diretorio = new File(pasta);
            diretorio.mkdirs();

            arquivo = new File(pasta + nomeArquivo);
            arquivo.createNewFile();
            
            System.setOut(new PrintStream(arquivo));
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }

Obrigado pessoal.

Criado 13 de dezembro de 2006
Ultima resposta 13 de dez. de 2006
Respostas 9
Participantes 5