从定义的目录与调用Runtime.getRuntime()执行文件。EXEC(execute

2019-06-24 15:55发布

我只是想从一个特定的文件夹执行我的文件。 在我的情况/数据/数据/我的包/文件/。 所以我尝试:

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

它不工作。 任何人都可以请告诉我这样做的正确方法。 谢谢

Answer 1:

应该可以调用可执行程序使用一个特定的工作目录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一个新的进程并没有看到改变。



Answer 2:

它为我,当我使用下面的重载方法:

公共过程EXEC(字符串命令,字符串[] envp,文件DIR)

例如:

File dir = new File("C:/Users/username/Desktop/Sample");
String cmd = "java -jar BatchSample.jar";
Process process = Runtime.getRuntime().exec(cmd, null, dir);

该命令只存储要在命令行中运行该命令。 dir只是存储要执行的.jar文件的路径。



文章来源: execute file from defined directory with Runtime.getRuntime().exec
标签: java shell exec