1) Estoy usando Java para llamar terminal de Linux para ejecutar foo.exe y guardar la salida en un archivo:Uso de Java para llamar al terminal Linux: ¿cómo vaciar la salida?
String[] cmd = {"/bin/sh", "-c", "foo >haha.file"};
Runtime.getRuntime().exec(cmd);
2) El problema es cuando Pienso leer haha.file adelante en el código , no se ha escrito aún:
File f=new File("haha.file"); // return true
in = new BufferedReader(new FileReader("haha.file"));
reader=in.readLine();
System.out.println(reader);//return null
3) Sólo después de que el programa se lleva a cabo se escribirá el haha.file. Solo sé cómo limpiar a los "Escritores" pero no sé cómo limpiarlo. Me gusta esto. ¿Cómo puedo forzar a Java a escribir el archivo en la terminal?
Gracias de antemano E.E.
Tenga cuidado con este enfoque. Hay nasties al acecho con la corriente stdout/stderr cuando se usa exec(). Realmente necesita consumir ASYNCHRONOUSLY las secuencias de salida/error mientras waitFor() está bloqueando, de lo contrario, puede que nunca regrese porque los búferes stdout/err se llenan y bloquean los procesos bifurcados. Checkout apache commons-exec para una lib que resuelve esto. –