txt texto sobreescribir por mostrar modificar linea leer guardar ejemplos ejemplo datos contenido como archivos archivo java file-io console

java - texto - Cómo escribir la salida de la consola en un archivo txt



printwriter java ejemplo (11)

Además de los diversos enfoques programáticos discutidos, otra opción es redirigir la salida estándar desde el shell. Aquí hay varios ejemplos de Unix y DOS .

Intenté escribir la salida de la consola en un archivo txt usando esta sugerencia de código ( http://www.daniweb.com/forums/thread23883.html# ) sin embargo, no tuve éxito. ¿Qué pasa?

try { //create a buffered reader that connects to the console, we use it so we can read lines BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); //read a line from the console String lineFromInput = in.readLine(); //create an print writer for writing to a file PrintWriter out = new PrintWriter(new FileWriter("output.txt")); //output to the file a line out.println(lineFromInput); //close the file (VERY IMPORTANT!) out.close(); } catch(IOException e1) { System.out.println("Error during reading/writing"); }


Crea el siguiente método:

public class Logger { public static void log(String message) { PrintWriter out = new PrintWriter(new FileWriter("output.txt", true), true); out.write(message); out.close(); } }

(No he incluido el manejo correcto de IO en la clase anterior, y no se compilará, hágalo usted mismo. También considere configurar el nombre del archivo. Tenga en cuenta el argumento "verdadero". Esto significa que el archivo no se volverá a crear cada vez que llamas al método)

Luego, en lugar de System.out.println(str) llama a Logger.log(str)

Este enfoque manual no es preferible. Utilice un marco de trabajo de registro: slf4j, log4j , commons-logging y muchos más


Debes hacer algo como esto:

PrintStream out = new PrintStream(new FileOutputStream("output.txt")); System.setOut(out);

La segunda declaración es la clave. Cambia el valor del atributo System.out supuestamente "final" para que sea el valor de PrintStream proporcionado.

Hay métodos análogos ( setIn y setErr ) para cambiar la entrada estándar y las secuencias de error; consulte java.lang.System javadocs para más detalles.

Me gustaría agregar que, en general, es una mejor idea utilizar un subsistema de registro como Log4j , Logback o el subsistema Java java.util.logging estándar. Estos ofrecen cosas como el control de registro detallado a través de archivos de configuración en tiempo de ejecución, soporte para archivos de registro continuos, avances en el registro del sistema.

O bien, si lo que estás haciendo no es "iniciar sesión", entonces considera:

  • redirigir salida estándar a un archivo en la línea de comando, o
  • cambiar su aplicación para usar una out pasada como parámetro en lugar de escribir en System.out .

Maniobrar (por ejemplo, redirigir) System.out puede ocasionar sorpresas desagradables para otros códigos en su JVM que no esperan que esto suceda.


En netbeans, puede hacer clic con el botón derecho del mouse y luego guardarlo como un archivo .txt. Luego, en función del archivo .txt creado, puede convertir al archivo en cualquier formato que desee obtener.


No es necesario escribir ningún código, solo en cmd en la consola puede escribir:

javac myFile.java java ClassName > a.txt

Los datos de salida se almacenan en el archivo a.txt.


Puede usar System.setOut() al inicio de su programa para redireccionar todos los resultados a través de System.out a su propio PrintStream .


para conservar la salida de la consola, es decir, escribir en un archivo y también mostrarlo en la consola, puede usar una clase como:

public class TeePrintStream extends PrintStream { private final PrintStream second; public TeePrintStream(OutputStream main, PrintStream second) { super(main); this.second = second; } /** * Closes the main stream. * The second stream is just flushed but <b>not</b> closed. * @see java.io.PrintStream#close() */ @Override public void close() { // just for documentation super.close(); } @Override public void flush() { super.flush(); second.flush(); } @Override public void write(byte[] buf, int off, int len) { super.write(buf, off, len); second.write(buf, off, len); } @Override public void write(int b) { super.write(b); second.write(b); } @Override public void write(byte[] b) throws IOException { super.write(b); second.write(b); } }

y usado como en:

FileOutputStream file = new FileOutputStream("test.txt"); TeePrintStream tee = new TeePrintStream(file, System.out); System.setOut(tee);

( solo una idea, no completa )


La forma más fácil de escribir la salida de la consola en el archivo de texto es

//create a file first PrintWriter outputfile = new PrintWriter(filename); //replace your System.out.print("your output"); outputfile.print("your output"); outputfile.close();


Esta es mi idea de lo que estás tratando de hacer y funciona bien:

public static void main(String[] args) throws IOException{ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter out = new BufferedWriter(new FileWriter("c://output.txt")); try { String inputLine = null; do { inputLine=in.readLine(); out.write(inputLine); out.newLine(); } while (!inputLine.equalsIgnoreCase("eof")); System.out.print("Write Successful"); } catch(IOException e1) { System.out.println("Error during reading/writing"); } finally { out.close(); in.close(); } }


Para escribir la salida de la consola en un archivo txt

public static void main(String[] args) { int i; List<String> ls = new ArrayList<String>(); for (i = 1; i <= 100; i++) { String str = null; str = +i + ":- HOW TO WRITE A CONSOLE OUTPUT IN A TEXT FILE"; ls.add(str); } String listString = ""; for (String s : ls) { listString += s + "/n"; } FileWriter writer = null; try { writer = new FileWriter("final.txt"); writer.write(listString); writer.close(); } catch (IOException e) { e.printStackTrace(); } }

Si desea generar el PDF en lugar del archivo de texto, use la dependencia dada a continuación:

<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.0.6</version> </dependency>

Para generar un PDF, use este código:

public static void main(String[] args) { int i; List<String> ls = new ArrayList<String>(); for (i = 1; i <= 100; i++) { String str = null; str = +i + ":- HOW TO WRITE A CONSOLE OUTPUT IN A PDF"; ls.add(str); } String listString = ""; for (String s : ls) { listString += s + "/n"; } Document document = new Document(); try { PdfWriter writer1 = PdfWriter .getInstance( document, new FileOutputStream( "final_pdf.pdf")); document.open(); document.add(new Paragraph(listString)); document.close(); writer1.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } }


PrintWriter out = null; try { out = new PrintWriter(new FileWriter("C://testing.txt")); } catch (IOException e) { e.printStackTrace(); } out.println("output"); out.close();

Estoy usando la ruta absoluta para el FileWriter. Me está funcionando como un encanto. También asegúrese de que el archivo esté presente en la ubicación. De lo contrario, lanzará una excepción FileNotFoundException. Este método no crea un nuevo archivo en la ubicación de destino si el archivo no se encuentra.