在 java 中获取命令输出的最简单方法

Simplest way to get command output in java

我知道您可以使用以下命令 运行 java 中 linux 的命令,并从刚刚 运行.[=12 的命令中获取输出=]

Process p = Runtime.getRuntime().exec("host -t a " + domain);
p.waitFor();
StringBuffer sb = new StringBuffer();
BufferedReader reader = 
     new BufferedReader(new InputStreamReader(p.getInputStream()));

String line = "";           
while ((line = reader.readLine())!= null) {
sb.append(line + "\n");
}

不过我想知道,是否有任何更简单的方法可以从 运行 命令中获取输出?

这是我使用的代码。它

  • 合并错误和输出,因此如果您遇到错误,您仍然会看到它。
  • 读取生成的数据,因此缓冲区不会填满。
  • 不删除新行只是为了将它们添加回去。

.

private static String run(String... cmds) throws IOException {
    ProcessBuilder pb = new ProcessBuilder(cmds);
    pb.redirectErrorStream(true);
    Process process = pb.start();
    StringWriter sw = new StringWriter();
    char[] chars = new char[1024];
    try (Reader r = new InputStreamReader(process.getInputStream())) {
        for (int len; (len = r.read(chars)) > 0; ) {
            sw.write(chars, 0, len);
        }
    }
    return sw.toString();
}