Java 将 getOutputStream 处理为字符串
Java Process getOutputStream to String
Java 8 在这里。如何将 Process#getOutputStream()
中的数据读入字符串?我正在尝试从 Java 和 hook/capture 其 STDOUT 内部 运行 一个进程。
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("consul -v");
String capturedOutput;
OutputStream os = proc.getOutputStream();
capturedOutput = howDoIConvert(os); // <---- ???
在这里寻找确切的代码(不是像 baos.toString(codepage)
这样模糊的东西。如果我需要礼貌地 close()
任何事情也很感兴趣。
您从 inputStream 而非 outputStream 读取数据。
OutputStream 用于向进程传递数据。
Process
有两个基本输入流。一个用于标准输入,可以用 getInputStream()
检索,另一个用于错误,可以用 getErrorStream()
检索
来自 getInputStream()
的 java 文档:
Returns the input stream connected to the normal output of the
subprocess
来自 getErrorStream()
Returns the input stream connected to the error output of the
subprocess.
关于流的注意事项: 从 java 程序的角度来看,Process
是一个 外部程序。当您需要向外部程序添加一些输入时,您从 java 写入该程序(因此 java 程序的输出是 Process 的输入)。相反,如果外部程序写了一些东西,你会读它(所以 Process 的输出是 java 程序的输入)。
Java Data direction External Process
_____________________________________________________________
write to OutputStream ------------> read from InputStream
read from InputStream <------------ write to OutputStream
Java 8 在这里。如何将 Process#getOutputStream()
中的数据读入字符串?我正在尝试从 Java 和 hook/capture 其 STDOUT 内部 运行 一个进程。
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("consul -v");
String capturedOutput;
OutputStream os = proc.getOutputStream();
capturedOutput = howDoIConvert(os); // <---- ???
在这里寻找确切的代码(不是像 baos.toString(codepage)
这样模糊的东西。如果我需要礼貌地 close()
任何事情也很感兴趣。
您从 inputStream 而非 outputStream 读取数据。
OutputStream 用于向进程传递数据。
Process
有两个基本输入流。一个用于标准输入,可以用 getInputStream()
检索,另一个用于错误,可以用 getErrorStream()
来自 getInputStream()
的 java 文档:
Returns the input stream connected to the normal output of the subprocess
来自 getErrorStream()
Returns the input stream connected to the error output of the subprocess.
关于流的注意事项: 从 java 程序的角度来看,Process
是一个 外部程序。当您需要向外部程序添加一些输入时,您从 java 写入该程序(因此 java 程序的输出是 Process 的输入)。相反,如果外部程序写了一些东西,你会读它(所以 Process 的输出是 java 程序的输入)。
Java Data direction External Process
_____________________________________________________________
write to OutputStream ------------> read from InputStream
read from InputStream <------------ write to OutputStream