在 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();
}
我知道您可以使用以下命令 运行 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();
}