JAVA调用CMD 如何阻塞

JAVA调用CMD 如何阻塞

作者:Elara发布时间:2026-02-24阅读时长:0 分钟阅读次数:8

用户关注问题

Q
如何在Java中调用CMD命令,并确保程序等待命令执行完成?

我想在Java程序中执行CMD命令,并希望程序在命令执行完成前不继续执行,应该怎么做?

A

使用Process类的waitFor方法实现阻塞

可以通过Runtime.getRuntime().exec()或ProcessBuilder启动CMD进程之后,调用返回的Process对象的waitFor()方法。该方法会使当前线程阻塞,直到被调用的进程结束,从而保证命令执行完毕后程序才会继续执行。

Q
调用CMD后如何读取命令的输出内容?

在Java中执行CMD命令后,怎样获取该命令的输出结果?

A

通过Process的输入流获取命令输出

执行CMD命令后,可以使用Process对象的getInputStream()方法读取命令的标准输出。结合InputStreamReader和BufferedReader,可以逐行读取输出内容,方便后续处理。

Q
执行CMD命令时如何避免程序死锁?

我在Java中调用CMD命令,有时候程序卡住不动了,该如何避免这种情况?

A

同时读取标准输出和错误输出防止缓冲区阻塞

CMD命令可能会生成大量标准输出或错误输出,若不及时读取,缓冲区会满导致程序阻塞。建议在执行命令后,分别开启线程读取Process的标准输出流和错误输出流,确保缓冲区及时清空,避免出现死锁。