好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java程序执行Cmd指令所遇问题记录及解决方案

今天带来Java程序执行Cmd指令所遇问题记录及解决方案教程详解

这篇是有关在编写 Java程序执行Cmd指令 时所遇到的问题记录,其中有一些是 个人的理解 ,如有问题望不吝赐教,感谢❤

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指令所遇问题记录及解决方案的详细内容...

  阅读:54次