capturar el resultado de otra aplicacion con java

alex
03 de Enero del 2005
Saludos a todos y feliz año nuevo!

Estoy haciendo una aplicación en java, y me he quedado estancado, tal vez alguien sepa como solucionar mi problema.

Necesito que mi código reciba la salida de otra aplicacion (escrita en un lenguaje distinto).

Para ello tengo que llamar a esa aplicacion (me he creado un fichero .bat, que es lo que invoco), y capturar lo que devuelva.

Mi pregunta es:
¿¿¿Sería posible redirigir la salida estandar del sistema operativo mediante java, para que pueda capturar dicha salida y tratarla???

Muchas gracias de antemano a todos!

chuidiang
03 de Enero del 2005
Hola:

Te lo pongo un poco de memoria, así que pueda que haya errores de sintaxis o falte algún parametro o algo de eso.

Para arrancar una aplicacion externa desde java, usa la clase Rutime. Además de arrancarla, develve un Process

Proccess p = Runtime.getRuntime().exec ("ejecutable.bat");

Al Process puede pedirle unos flujos de entrada y de salida. Lo que escibas por el flujo de salida, ira a la stdin de la aplicacion. Lo que la aplicacion escriba por la stdout, te llegara por uno de esos flujos.
En tu caso concreto, para leer la salida de la aplicacion, deberias hacer algo como esto

InputStream s = p.getInputStream();

s tiene metodos de leer. Desgraciadamente, son escasos y quizas no te valgan del todo.

Si es asi, puedes construir una clase BufferedReader para poder leer String de texto, con su metodo readLine(). Esto se hace asi.

BufferedReader d = new BufferedReader(new IputStreamReader(s));

Si en la salida del programa hay numeros, deberas "traducirlos" con clases como Integer.parseString() o similares.

Se bueno.