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‚ÄĚ.