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.