Olá!

Quando criamos um programa em java e queremos mostrar alguma mensagem no console usamos inconscientemente o System.out.println(), mas e para gravar essas mesmas mensagens em um arquivo texto? Muito simples, basta dar um System.setOut() passando o PrintStream desejado. No exemplo abaixo alteramos a saída padrão, que era no console, para um arquivo texto.

String path = "D:\\saida.txt";
FileOutputStream fileOutputStream = null;
	try {
		fileOutputStream = new FileOutputStream(path);
		System.setOut(new PrintStream(fileOutputStream, true));
		System.out.println("Teste");
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	}

Até mais
Roberto

Share


4 comentários

  1. #
    Igor
    abril 23rd, 2013 at 21:02

    Parabéns. Era justamente o que estava procurando.

    Como eu faço para redirecionar para um arquivo texto e ao mesmo tempo permanecer dando os print’s no terminal?

    Obrigado

    Responda a esse comentário
  2. #
    Igor
    maio 7th, 2013 at 9:59

    Obrigado.

    uma dúvida: como eu faria para intercalar na execução enviar para o arquivo de log e voltar a mostrar no terminal?

    Responda a esse comentário
    • #
      Roberto Furutani
      maio 7th, 2013 at 10:17

      É só guardar uma referência para o System.out e ficar alternando entre ele e o PrintStream do arquivo.

      Exemplo:
      O zero e o 2 aparecem no console e o 1 vai pro arquivo.

      System.out.println(“0”);
      PrintStream out = System.out;

      try {
      System.setOut(new PrintStream(new File(“d:\\logs.txt”)));
      System.out.println(“1”);
      System.setOut(out);
      System.out.println(“2”);

      } catch (FileNotFoundException e) {
      e.printStackTrace();
      }

      Responda a esse comentário

Deixe um comentário