Leer la salida del programa

    Cuando se ejecuta un programa desde java, su salida por pantalla ya no sale. ¿Qué está pasando?. Al ejecutar un programa desde java, la salida del programa se redirige a nuestro programa java, en vez de a al pantalla. Esto es útil porque así, desde el programa java, podemos leer lo que está sacando el ejecutable externo y hacer algo con ello.

    Para leer lo que saca el ejecutable externo, debemos usar el Process que nos devuelve Runtime.exec(). Este Process representa de alguna forma al ejecutable externos mientras está corriendo. Con él podemos obtener la salida del programa, su salida de error e incluso enviarle datos como si se estuvieran tecleando. También podriamos hacer que el programa termine o esperar a que lo haga él solo.

    Si queremos leer su salida, obtenemos un InputStream por medio del método getInputStream() y leemos en él. Puesto que un InputStream es algo incómodo para leer cadenas de texto, lo metemos dentro de algo un poco más cómodo. El código para todo ello es este:
 
// Se obtiene el stream de salida del programa
InputStream is = p.getInputStream();
            
// Se prepara un BufferedReader para poder leer la salida más
// comodamente.
BufferedReader br = new BufferedReader (new InputStreamReader (is));

    Ahora leer es simple. El BufferedReader tiene un método readLine() que nos devuelve directamente una línea de texto en forma de String.