Java中如何执行系统命令

=Start=

缘由:

在学习Java的过程中不断用文章进行整理总结(常用功能的Java实现),争取早日能较为熟练的使用Java进行开发。

正文:

参考解答:

在Java中执行系统命令可以使用 ProcessBuilder 或者 Runtime.exec 方法。

上面这种常规的简单方法可能会hang住JVM。发生这种情况是因为inputStream缓冲区被塞满导致阻塞,直到它被读取;将 waitFor() 方法放在读取 inputStream 之后可以解决这个问题,但前提是errorStream没有被填满。

所以,正确的做法就是——新建2个线程去处理inputStream和errorStream缓冲区,然后再调用 waitFor() 方法。

如果希望更灵活的获取执行命令的返回值、输出、错误输出等信息,可以参考一下「Java exec – execute system processes with Java ProcessBuilder and Process」里面的基于 ProcessBuilder 和 新建线程处理inputStream和errorStream缓冲区 的方式实现的类。

参考链接:
=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3982.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注