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

发布于 2021-01-30 16:31:07

我只想从特定文件夹执行文件。就我而言/ data / data / my-package / files /。所以我试着:

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

没用 谁能告诉我正确的做法。谢谢

关注者
0
被浏览
110
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

    应该可以使用以下命令在特定的工作目录下调用可执行文件: 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"));
    

    也许没有完整的途径 myfile

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

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

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

    问题cd somewhere在于目录已针对其他流程更改,因此exec在新流程中的第二次调用看不到更改。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看