Java 8在这里。如何将Process#getOutputStream()
中的数据读入字符串?我试图从Java内部运行一个进程并挂钩/捕获它的STDOUT。
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("consul -v");
String capturedOutput;
OutputStream os = proc.getOutputStream();
capturedOutput = howDoIConvert(os); // <---- ???
在这里寻找确切的代码(不是像baos.toString(codepage)
那样模糊的东西。如果我需要close()
礼貌地感兴趣,也感兴趣。
答案 0 :(得分:8)
您从inputStream读取数据而不是从outputStream读取数据。
OutputStream用于将数据传递给进程。
Process
有两个基本输入流。一个是标准输入,可以使用getInputStream()
检索,另一个是错误,可以使用getErrorStream()
检索
来自getInputStream()
的javadoc:
返回连接到正常输出的输入流 子
和getErrorStream()
返回连接到错误输出的输入流 子进程。
关于流的注意事项:从java程序的角度来看,Process
是外部程序。当您需要向外部程序添加一些输入时,您将从java编写到该程序(因此java程序的输出是Process的输入)。相反,如果外部程序写入您读取的内容(因此Process的输出是java程序的输入)。
Java Data direction External Process
_____________________________________________________________
write to OutputStream ------------> read from InputStream
read from InputStream <------------ write to OutputStream
答案 1 :(得分:0)
这里有很多例子:Read/convert an InputStream to a String但它们可能不是特定于Java 8的。