如何在控制台中显示命令执行并在java中访问其输出

我有一个命令行工具,用于查询服务器并打印要运行的待处理作业的状态.这可能需要30秒.我需要从java调用这个工具,我想在我的GUI上的文本区域中显示它的输出.出于示例的目的,假设命令是windows中的“dir”.

Process.getRuntime().exec(“cmd / c dir”);阻止命令完成执行,所以我认为最好显示在终端中执行的命令,然后读取输出并将其显示在我的文本区域中以供将来参考.但是,控制台被隐藏,给用户一个应用程序已停止工作的印象.经过大量研究,我尝试过:

cmd / k目录 – 在后台运行并可以读取输出,但应用程序挂起,因为它需要/ k开关意味着保持窗口打开,但我看不到它关闭它.

cmd / c start dir – 在新的可见终端中打开,运行但不关闭.手动关闭不允许我读取输出

cmd / k start dir – 与上面相同的结果

我的问题是,如何生成一个命令来运行,看它运行,并访问其输出?

最佳答案
Process proc = null;
String[] cmd = { "cmd", "/c", "dir" };
proc = Runtime.getRuntime().exec(cmd);

InputStream inputStream = proc.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String line;
while ((line = bufferedReader.readLine()) != null)
{
    System.out.println(line);
}

转载注明原文:如何在控制台中显示命令执行并在java中访问其输出 - 代码日志