Java - Proceso externo que crea archivo

   
Vista:

Proceso externo que crea archivo

Publicado por Ernesto (2 intervenciones) el 31/03/2009 18:22:25
Tengo una aplicacion en java que lanza un programa que crea un archivo y vuelca en él un contenido. (Serái así : c:\xml tr c:\osmarender.xsl osm-map-features-z17.xml >map.svg )
Para hacerlo más facil, he creado yo el archivo y he intentado volcar la salida del lanzamiento sobre el archivo, el código es el siguiente:

String aux1="c:\xml tr c:\osmarender.xsl osm-map-features-z17.xml";
Process p1 = Runtime.getRuntime().exec(aux1);
InputStream is1=p1.getInputStream();
OutputStream out = new FileOutputStream("map.svg");
byte[] buffer = new byte[256];
while (true) {
int n = is1.read(buffer);
if (n < 1) {
break;
}
out.write(buffer, 0, n);
}
is1.close();
out.close();

Cuando lo ejecuto se queda parado en el read. En windows miro el admin de tareas y veo que el proceso que he lanzado se queda parado, con 0% de cpu.... Cuando paro la aplicacion en java el programa deja de estar parado y sigue la ejecucion normal..
Creo que porque no soy capaz de vaciar correctamente los buffer de java y volcarlos sobre el archivo creado.
Alguien tiene alguna idea de por que es?? Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Proceso externo que crea archivo

Publicado por Tom (907 intervenciones) el 01/04/2009 09:30:57
Revísate la especificación de Runtime.exec().
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Proceso externo que crea archivo

Publicado por Armando Nava (12 intervenciones) el 01/04/2009 16:33:33
Encontre este codigo en la chuwiki, espero te sirva, no quites la fuente por favor.

http://www.chuidiang.com/chuwiki/index.php?title=Portada

/*
* PruebaRuntime.java
*
* Created on 17 de abril de 2005, 15:43
*/

package chuidiang.ejemplos.runtime;

import java.io.*;

/**
* Ejemplo simple de arranque de un programa externo desde java.
* @author Chuidiang
*/
public class PruebaRuntime {

/** Creates a new instance of PruebaRuntime */
public PruebaRuntime()
{
try
{
// Se lanza el ejecutable.
Process p=Runtime.getRuntime().exec ("cmd /c dir");

// 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));

// Se lee la primera linea
String aux = br.readLine();

// Mientras se haya leido alguna linea
while (aux!=null)
{
// Se escribe la linea en pantalla
System.out.println (aux);

// y se lee la siguiente.
aux = br.readLine();
}
}
catch (Exception e)
{
// Excepciones si hay algún problema al arrancar el ejecutable o al leer su salida.*/
e.printStackTrace();
}
}

/**
* Crea la clase principal que ejecuta el comando dir y escribe en pantalla
* lo que devuelve dicho comando.
*
* @param args the command line arguments
*/
public static void main(String[] args) {
new PruebaRuntime();
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Proceso externo que crea archivo

Publicado por Ernesto (2 intervenciones) el 02/04/2009 08:34:40
Gracias Armando!
Ya he preguntado en el foro de chuidiang pero no he podido encontrar respuesta.
Aun así recomiendo que entréis porque hay un monton de tutoriales sobre java, c, linux..un monton. Ademas de un foro que a mi me ha resuelto bastantes dudas, recomendado:
http://www.chuidiang.com/

Ok Tom, mirare la especificacion a ver que saco..
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar