使用Runtime.getRuntime().exec从定义的目录执行文件

113*_*408 15 java shell exec

我只想从特定文件夹执行我的文件.在我的情况下/ data/data/my-package/files /.所以我试过:

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

它不起作用.请问有没有人能以正确的方式告诉我.谢谢

zap*_*apl 37

应该可以使用特定的工作目录调用可执行文件 Runtime.exec(String command, String[] envp, File dir)

如下:

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

也许没有完整的路径 myfile

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

Context#getFilesDir()而不是硬编码路径也应该工作,并且比自己指定路径更安全/更清洁,因为不能保证/data/data/.. 始终是所有设备的正确路径.

Process process2=Runtime.getRuntime().exec("myfile",
        null, getFilesDir()));
Run Code Online (Sandbox Code Playgroud)

问题cd somewhere是为不同的进程更改了目录,因此exec在新进程中的第二次调用不会看到更改.