Java - Cómo redirigir un archivo a la entrada estándar

La explicación a continuación sirve para que un programa escrito en el lenguaje de programación Java, diseñado para leer de la entrada estándar pueda tomar los datos de un archivo.

El comando en la terminal se muestra a continuación, en donde Programa es el programa en Java y entrada.txt contiene los datos de entrada.

$ java Programa < entrada.txt

De esta forma el contenido del archivo es redirigido a la entrada estándar.

¿Qué pasa si el archivo tiene muchas líneas? ¿Cómo leer cada una de ellas?

Suponga que el archivo entrada.txt contiene estas líneas:


1
2
3
4
5



Un programa Programa.java que lee cada una de estas líneas del archivo (como si fueran de la entrada estándar) y las imprime se muestra a continuación. Usa el método ready() de la clase BufferedReader.


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;

public class Programa{

public static void main(String[] args) throws java.io.IOException {

BufferedReader in;
PrintSream out;

in = new BufferedReader( new InputStreamReader( System.in) );
out = System.out;

// Lee el archivo linea por linea
while( in.ready() ){

String linea = in.readLine();

// Imprime a la salida estandar
out.println( linea );

}

}

}



En el caso que también se quisiera redirigir la salida estándar a un archivo:

$ java Programa < entrada.txt > salida.txt