21

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

3
  • does ....exec("/data/data/my-package/files/myfile"); work? Commented May 21, 2012 at 16:46
  • it work but here i want to exec my file from specified folder because it generate a new file. thanks Commented May 21, 2012 at 17:00
  • You can see [my answer][stackoverflow.com/questions/6811522/… Commented Feb 16, 2017 at 18:17

3 Answers 3

44

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.

Sign up to request clarification or add additional context in comments.

Comments

2

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.

Comments

0

A different solution will be,

Execute a .bat file from the Java Code

And do all the directory change, and stuff inside the bat file

For instance, my execute.bat file looks like this,

cd flutter_app
flutter build apk
cd ..

And the Java code looks like this,

Process process = Runtime.getRuntime().exec("execute.bat");

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.