I just want to execute my file from a specific folder. in my case /data/data/my-package/files/. So i tried :
Process process2=Runtime.getRuntime().exec("cd /data/data/my-package/files/");
process2.waitFor();
process2=Runtime.getRuntime().exec("./myfile");
It doesn't work. could anyone tell me please the right way to do that . Thanks
It should be possible to call the executable with a specific working directory using Runtime.exec(String command, String[] envp, File dir)
as follows:
Process process2=Runtime.getRuntime().exec("/data/data/my-package/files/myfile",
null, new File("/data/data/my-package/files"));
maybe without the full path to myfile
Process process2=Runtime.getRuntime().exec("myfile",
null, new File("/data/data/my-package/files"));
Context#getFilesDir()
instead of hardcoding the path should work too and is safer / cleaner than specifying the path yourself since it is not guaranteed that /data/data/..
is always the correct path for all devices.
Process process2=Runtime.getRuntime().exec("myfile",
null, getFilesDir()));
The problem with cd somewhere
is that the directory is changed for a different Process so the second call to exec
in a new Process does not see the change.
It works for me when I use the following overloaded method:
public Process exec(String command, String[] envp, File dir)
For example:
File dir = new File("C:/Users/username/Desktop/Sample");
String cmd = "java -jar BatchSample.jar";
Process process = Runtime.getRuntime().exec(cmd, null, dir);
The command just stores the command you want to run in command line. dir
just stores the path of your .jar file to be executed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With