Salvar saida do console em txt JAVA

Tem como salvar todas as saidas do console em txt, por exemplo tenho varios System.out.println(""); no meu codigo tem alguma maneira de salvar tudo que eu mandei imprimir em um arquivo txt de uma maneira geral, onde tudo que foi imprimido e salvo no arquivo txt.

Olá

O que já foi impresso, acho que não, mas aquilo que será impresso dá:

PrintStream ps = new PrintStream(new File("arquivo.txt"));
System.out = ps;

Um exemplo. Lembrando que dessa forma não está completamente certa, profissional, pois para fazer melhor você teria que usar List para adicionar seus dados ao arquivo. Mas serve como quebra galho para você ter uma ideia de como fazer…

package seupacote;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Arquivo {

public static void criaArquivo () {
try { FileWriter arquivo = new FileWriter("arquivo.txt", true);
      System.out.println("Arquivo criado \n");
     }catch(IOException e) { System.out.print("Não foi possivel criar o arquivo");
} }

public static void listarArquivo() {
File arquivo = new File("arquivo.txt");
try( FileReader fr = new FileReader(arquivo) ){
    int  c =   fr.read();
    while( c != -1){
    System.out.print( (char) c );
    c =  fr.read();
    }
    }catch(IOException ex){} }


public static void main(String[] args) throws IOException {
Scanner entrada = new Scanner(System.in);
int opcao;
do {
    System.out.print("1 - Criar arquivo \n"); //Você so precisa escolher essa opcao uma vez. Pode usar somente ao abrir o programa pela primeira vez
    System.out.print("2 - Listar dados \n");
    System.out.print("3 - Inserir \n");
    System.out.println("4 - Sair");
    opcao = entrada.nextInt();
    
    switch (opcao) {
        case 1: Arquivo.criaArquivo(); break;
        case 2: System.out.println("--------------------------------");
                Arquivo.listarArquivo();
                System.out.println("--------------------------------");  break;
        case 3:   try{
                    FileWriter arquivo = new FileWriter("arquivo.txt", true);
                    entrada = new Scanner(System.in); arquivo.write("\t");
                    System.out.print("Nome: "); arquivo.write(entrada.nextLine()); arquivo.write("\t");
                    System.out.print("Endereco: "); arquivo.write(entrada.nextLine()); arquivo.write("\t");
                    arquivo.write("\n");
                    arquivo.flush();
                    break;
                 }catch(IOException ex){
                   System.out.println("Erro ao gravar no arquivo "+ex.getMessage()); }
        case 4: System.exit(0);
        default: System.out.println("Opcao invalida!");
        }
    
} while (opcao != 4);

}

}

1 curtida

Hoje você consegue fazendo setOut em vez de atribuição .

PrintStream ps = new PrintStream(new File("arquivo.txt"));
System.setOut(ps);

Além das explicações que os colegas deram via código…
Você pode salvar o resultado de qualquer processo em um txt através de um pipe, em linha de comando.

Basta dispara-lo com um pipe, usando o sinal da >

java -jar SeuPrograma > saida.txt

Algumas IDEs também dão essa opção dentro dos menus de “Run As”.