Apache common exec执行外部命令
Posted 熊猫太郎
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache common exec执行外部命令相关的知识,希望对你有一定的参考价值。
工作中需要用java调用外部命令(shell脚本,启动服务等),之前使用Runtime.getRuntime().exec调用外部程序,Runtime.getRuntime().exec是java原生态的命令,而Apache commons-exec封装一些常用的方法用来执行外部命令。例如我们想得到当前windows目录下的文件信息,在cmd命令行下的命令是dir。具体以代码示例展示2个方法实现。
第一种Runtime.getRuntime().exec
String pl_cmd = "cmd.exe /c dir"; Process p_pl = Runtime.getRuntime().exec(pl_cmd); BufferedReader br_pl = new BufferedReader(new InputStreamReader( p_pl.getInputStream())); String stdout = br_pl.readLine(); while (stdout != null) { System.out.println(stdout); stdout = br_pl.readLine(); }
第二种Apache commons-exec
ByteArrayOutputStream stdout = new ByteArrayOutputStream(); PumpStreamHandler psh = new PumpStreamHandler(stdout); CommandLine cl = CommandLine.parse("cmd.exe /c dir"); DefaultExecutor exec = new DefaultExecutor(); exec.setStreamHandler(psh); exec.execute(cl); System.out.println(stdout.toString());
代码参考github
以上是关于Apache common exec执行外部命令的主要内容,如果未能解决你的问题,请参考以下文章
使用 Apache Commons Exec 向命令提供多个输入并提取输出时出现问题
Java使用Apache Commons Exec运行本地命令行命令
PHP 执行系统外部命令 system() exec() passthru()