Solucionado (ver solución)
Solucionado
(ver solución)
5
respuestas

No pude hacer funcionar el System.in

Hice exactamente igual al instructor, pero no me escribe el archivo. Incluso si le cambio el nombre al archivo de escritura y no lo cree, lo crea, pero no logro hacer que escriba lo que entro por la consola.

5 respuestas

Hola Julian, espero que estés bien.

Java tiene sus desafíos. Ver más detalles a través de la documentación en el Link: Class FileInputStream

Es interesante que compartas tu código con nosotros directo en el canal Discord ou insertar bloque de código (Ctrl+Alt+C) aquí en el foro

para una mejor comprensión del error.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios.
package ar.com.java.io.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

public class TestcopiarPegar {
    public static void main(String[] args) throws IOException {

        InputStream InputStream = System.in;
        Reader inputStreamReader = new InputStreamReader(InputStream);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

        OutputStream fileOutputStream = new FileOutputStream("texto-consola.txt");
        Writer outputStreamReader = new OutputStreamWriter(fileOutputStream);
        BufferedWriter bufferedWriter = new BufferedWriter(outputStreamReader);

        String linea;

        while ((linea = bufferedReader.readLine()) != null) {
            bufferedWriter.write(linea);
            bufferedWriter.newLine();
        }

        bufferedWriter.close();
    }
}

Este es el código. Cuando lo ejecuto, escribo en la consola, detengo la ejecución de la consola para que se escriba el archivo. Refresco para que aparezcan los cambios, pero el archivo me aparece vacío. Ese mismo código, si en ves de usar System.in uso creo un new FileInputStream("otroarchivo") funciona, lee ese archivo y lo escribe en el otro.

Estuve probando cosas, y lo que me parece que no me está tomando cuando detengo la consola es el bufferedWriter.close();

public class TestcopiarPegar {
    public static void main(String[] args) throws IOException {

        InputStream inputStream = System.in;
        Reader inputStreamReader = new InputStreamReader(inputStream);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

        OutputStream fileOutputStream = new FileOutputStream("texto-consola.txt");
        Writer outputStreamWriter = new OutputStreamWriter(fileOutputStream);
        BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);


        bufferedWriter.write(bufferedReader.readLine())
        bufferedWriter.close();
    }
}

Si hago esto, me imprime en el archivo la primer linea que escribo en consola, cuando apreto enter, se cierra la consola y se escribe el archivo.

pero si hago esto

String linea;

        while ((linea = bufferedReader.readLine()) != null) {
            System.out.println(linea);

            bufferedWriter.write(linea);
            bufferedWriter.newLine();
        }

        bufferedWriter.close();

A medida que voy escribiendo y apretando enter, el Syso me tira en consola lo que escribo ( o sea que a linea le llega lo que se captura de consola), pero cuando detengo la consola, no llega nada al archivo.

Incluso probe poner el bufferedWriter.close(); dentro del while, y si, escribe en el archivo la primer linea que escribo en la consola, ya la seguda me tira exception porque el archivo ya se cerro.

La verdad no se que puede ser....

solución!

Hola Julian, espero que esté bien.

Para crear un archivo con datos escritos por la consola, podemos usar System.in tal como está en tu código. Comprobé que todo está correcto con tu código.

Lo que pasa es que en Eclipse IDE (sistema operativo windows) debes seguir unos sencillos pasos que marcan la diferencia.

Continúe con los siguientes pasos:

  • ingrese con su entrada de texto;
  • saltar una línea;
  • y presiona CTRL + Z (lo considera como línea nula y sale);
  • actualizar tu proyecto hacendo click on refresh (como en la imagen);
  • comprobar el archivo de texto generado;

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Continúa con tus estudios y cualquier duda estaremos aquí =)

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Gracias María!!!!! Ahí me funcionó!!!!

Muchas gracias!!!!