0
点赞
收藏
分享

微信扫一扫

12 记录一次简单的Java程序调用Linux命令

书坊尚 2021-09-21 阅读 64

众所周知,每一个Java应用程序都有一个Runtime实例,通过这个实例,我们可以实现程序与环境之间相连接。使用getRuntime()方法可以获得到Runtime实例,值得注意的是,Runtime是不能手动创建的。Java使用Process类来表示一个进程。

实现我的需求的方法是:

1、通过Runtime.getRuntime().exec("命令")执行外部的程序。

2、使用上面的执行的返回结果(是一个Process对象),管理上面执行的子进程。

常用的Runtime.getRuntime().exec()方法如下:

  1. exec(String command)
  2. exec(String command, String envp[], File dir)
  3. exec(String cmd, String envp[])
  4. exec(String cmdarray[])
  5. exec(String cmdarray[], String envp[])
  6. exec(String cmdarray[], String envp[], File dir)

一般的应用程序可以直接使用第一版本,当有环境变量传递的时候使用后面的版本。其中2和6版本可以传递一个目录,标识当前目录,因为有些程序是使用相对目录的。

例子:

String[] cmds = { "/bin/sh", "-c",
"cd " + file_partent.getAbsolutePath() +
" && " + " zip " + " -r " + zipFile.getAbsolutePath() + " " + file_current.getName() +
" && " + " cd " + " - " }; //使用cd的目的是为了进到某个目录执行命令
System.out.println("cmds:" + Arrays.toString(cmds));
Process pro = null;
try {
pro = Runtime.getRuntime().exec(cmds); //执行外部命令,返回子进程对象
pro.waitFor(); //等待子进程完成
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}

结论:

执行外部的命令,两个关键类,Runtime类和Process类,主要的方法,getRuntime().exex();

举报

相关推荐

0 条评论