这篇文章主要介绍了Java程序执行Cmd指令所遇问题记录,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇是有关在编写Java程序执行Cmd指令时所遇到的问题记录,其中有一些是个人的理解来源gao.dai.ma.com搞@代*码网,如有问题望不吝赐教,感谢❤
Windows 命令提示符(cmd.exe)是 Windows NT 下的一个用于运行 Windows 控制面板程序或某些 DOS 程序的shell程序
1.执行Cmd命令的两种方式
(1)RunTime.getRunTime().exec(多种重载方式) – 会得到一个Process对象通过其start()方法开启一个新进程以执行输入的指令。
这种方法就不多说了,最后这种形式还是用到第二种方式的方法(Java Api文档中也推荐使用第二种方式去创建一个Process对象):
* @see ProcessBuilder * @since 1.3 */ public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException { return new ProcessBuilder(cmdarray) .environment(envp) .directory(dir) .start(); }
(2).new ProcessBuilder().command(指令)
2.获取执行指令后的输出:
在这里就遇到点问题,
上面两种方式执行Windows自带的命令都没有什么问题(像Ping、Ipconfig)。但是当执行像“Java -version”这样的外部命令,其输出通过getInputStream()方法是拿不到的。
后来是通过参考网上资料,采用将子进程的输出重定向到文件中,再从文件中读取内容的方法:
// 外部程序的输出放到了错误信息输出流中,不将错误信息流输出到文件话,输出信息就看不到了以上就是Java程序执行Cmd指令所遇问题记录及解决方案的详细内容,更多请关注gaodaima搞代码网其它相关文章!