Pregunta

Aquí es un simple trozo de código:

import java.io.*;
public class Read {
 public static void main(String[] args) {
     BufferedReader f = new BufferedReader(new InputStreamReader(System.in));
  while(true)
  {
   String x = null;
   try{
    x = f.readLine();
   }
   catch (IOException e) {e.printStackTrace();}
   System.out.println(x);
  }
 }
}

Puedo ejecutar esto como :java Leer < de entrada.txt

Una vez que el input.txt es completamente entubada en el programa, x sigue infinito de valores nulos.¿Por qué es eso así?Hay un camino por el que puedo hacer En la Norma(Línea de Comando) activa después de que el archivo que se introducen en el código se hace?He tratado de cierre de la secuencia y volver a abrir, no funciona.Reset etc también.

¿Fue útil?

Solución

Al ejecutar "java Read < input.txt" le ha dicho al sistema operativo que para este proceso, el archivo canalizado es estándar. No puede volver a la línea de comando desde la aplicación.

Si desea hacer eso, luego pase input.txt como parámetro de nombre de archivo a la aplicación, abra / lea / cierre el archivo usted mismo desde dentro de la aplicación, luego lea desde la entrada estándar para obtener cosas de la línea de comando.

Otros consejos

Bueno, esto es típico para leer en un BufferedReader. readLine() devuelve null cuando se alcanza el final de la transmisión. Tal vez su bucle infinito sea el problema ;-)

// try / catch ommitted

String x = null;

while( (x = f.readLine()) != null )
{
   System.out.println(x);
}

Necesita terminar su ciclo while cuando la línea es nula, así:

    BufferedReader in = null;
    try {
        in = new BufferedReader(new InputStreamReader(System.in));
        String line;
        while ((line = in.readLine()) != null) {
            System.out.println(line);
        }
    }
    catch (IOException e) {
        logger.error("IOException reading System.in", e);
        throw e;
    }
    finally {
        if (in != null) {
            in.close();
        }
    }

Hay un camino por el que puedo hacer En la Norma(Línea de Comandos) activa después de que el archivo que se introducen en el código se hace?

Lo siento golpear una vieja pregunta, pero ninguna de las respuestas hasta ahora señala que no es un (shell-la única) manera que para pasar de nuevo a la consola de entrada después de las tuberías en un archivo.

Si ejecuta el comando

{ cat input.txt & cat; } | java Read

a continuación, el texto de input.txt se pasa a java Read y entonces cayó de nuevo a la entrada de la consola.

Tenga en cuenta que si usted, a continuación, presione Ctrl+D, usted conseguirá el bucle infinito de nulls, a menos que se modifique el programa para finalizar el bucle cuando se recibe null.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top