2012-05-21 9 views
10

Solo quiero ejecutar mi archivo desde una carpeta específica. en mi caso/data/data/my-package/files /. así que intenté:ejecutar el archivo desde el directorio definido con Runtime.getRuntime(). Exec

Process process2=Runtime.getRuntime().exec("cd /data/data/my-package/files/"); 
process2.waitFor(); 
process2=Runtime.getRuntime().exec("./myfile"); 

No funciona. podría alguien decirme por favor la forma correcta de hacerlo. Gracias

+0

does '.... exec ("/data/data/my-package/files/myfile ");' work? – zapl

+0

funciona, pero aquí quiero ejecutar mi archivo desde la carpeta especificada porque genera un nuevo archivo. gracias – 113408

+0

Puedes ver [mi respuesta] [http://stackoverflow.com/questions/6811522/changing-the-working-directory-of-command-from-java/42281455#42281455] –

Respuesta

21

Debería ser posible llamar al ejecutable con un directorio de trabajo específico utilizando Runtime.exec(String command, String[] envp, File dir)

de la siguiente manera:

Process process2=Runtime.getRuntime().exec("/data/data/my-package/files/myfile", 
     null, new File("/data/data/my-package/files")); 

tal vez sin la ruta completa a myfile

Process process2=Runtime.getRuntime().exec("myfile", 
     null, new File("/data/data/my-package/files")); 

Context#getFilesDir() vez de hardcoding, la ruta debería funcionar también y es más segura/más limpia que especificar la ruta Dado que no se garantiza que /data/data/.. sea siempre la ruta correcta para todos los dispositivos.

Process process2=Runtime.getRuntime().exec("myfile", 
     null, getFilesDir())); 

El problema con cd somewhere es que el directorio se cambia por un proceso diferente por lo que la segunda llamada a exec en un nuevo proceso no ve el cambio.

+0

Gracias, funciona :) – 113408

+1

Gran respuesta, salvó mi tiempo. –

Cuestiones relacionadas