Estoy intentando ejecutar un programa desde el código de Java. Aquí está mi código:Ejecutar programa externo desde Java
public static void main(String argv[]) {
try {
String line;
Process p = Runtime.getRuntime().exec(
"/bin/bash -c ls > OutputFileNames.txt");
BufferedReader input = new BufferedReader(
new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
}
Mi sistema operativo es Mac OS X 10.6.
Si elimino el "> OutputFileNames.txt"
del método getRuntime().exec()
, todos los nombres de los archivos están bien impresos en la consola. Pero necesito que se imprima en un archivo.
Además, si cambio de la orden de:
Process p = Runtime.getRuntime().exec(
"cmd \c dir > OutputFileNames.txt");
y ejecutarlo en Windows, se ejecuta e imprime los resultados en el archivo perfectamente bien también.
He leído las otras publicaciones para ejecutar otra aplicación desde Java, pero ninguna parecía estar relacionada con mi problema.
Realmente agradecería cualquier ayuda que pueda obtener.
Gracias,
Si lo único que desea hacer es listar los archivos en un directorio, entonces no hay razón para hacerlo por un programa externo; puede simplemente usar 'File.listFiles()' y escribir el resultado en un archivo usted mismo. Eso funcionará en cualquier sistema operativo y no necesita un código específico para Mac OS X o Windows. – Jesper
Eso es algo básico que estoy intentando. Finalmente, lo que quiero hacer es ejecutar un programa externo llamado e imprimir la salida de ese programa en un archivo, luego analizar el archivo desde Java para hacer otras cosas útiles. –
¿Ha intentado usar .exec (new String [] {"/ bin/bash", "-c", "ls> OutputFileNames.txt"}); ¿También falla? – Anton