如何使用 java.lang.ProcessBuilder 将输出重定向到 java 流
How to redirect the output to a java stream using java.lang.ProcessBuilder
在 ProcessBuilder
文档中提供了三种方法来重定向进程的输出。
ProcessBuilder.Redirect redirectOutput()
ProcessBuilder redirectOutput(File file)
ProcessBuilder redirectOutput(ProcessBuilder.Redirect destination)
问题:我想将流程输出重定向到流而不是 File
,如何实现?
这是文档:https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html
怎么做:
当您开始处理时,您将能够通过 Process
对象获得 OutputStream
。
在 ProcessBuilder
的文档中,您可以找到方法 Process start()
。
使用 Process
对象,您可以通过方法 abstract OutputStream getOutputStream()
.
获得 OutputStream
文档:
- https://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.html
- https://docs.oracle.com/javase/8/docs/api/java/lang/Process.html
例子:
ProcessBuilder processBuilder = ProcessBuilder("/here/your/command1", "/here/your/command2");
Process process = processBuilder.start();
OutputStream outputSteeam = process.getOutputStream();
使用 Process 而不是 ProcessBuilder
下面是 Java API 运行时的示例:http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html
// Java runtime
Runtime runtime = Runtime.getRuntime();
// Command
String[] command = {"/bin/bash", "/my/file.sh"};
// Process
Process process = runtime.exec(command);
OutputStream out = process.getOutputStream();
在 ProcessBuilder
文档中提供了三种方法来重定向进程的输出。
ProcessBuilder.Redirect redirectOutput()
ProcessBuilder redirectOutput(File file)
ProcessBuilder redirectOutput(ProcessBuilder.Redirect destination)
问题:我想将流程输出重定向到流而不是 File
,如何实现?
这是文档:https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html
怎么做:
当您开始处理时,您将能够通过 Process
对象获得 OutputStream
。
在 ProcessBuilder
的文档中,您可以找到方法 Process start()
。
使用 Process
对象,您可以通过方法 abstract OutputStream getOutputStream()
.
OutputStream
文档:
- https://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.html
- https://docs.oracle.com/javase/8/docs/api/java/lang/Process.html
例子:
ProcessBuilder processBuilder = ProcessBuilder("/here/your/command1", "/here/your/command2");
Process process = processBuilder.start();
OutputStream outputSteeam = process.getOutputStream();
使用 Process 而不是 ProcessBuilder
下面是 Java API 运行时的示例:http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html
// Java runtime
Runtime runtime = Runtime.getRuntime();
// Command
String[] command = {"/bin/bash", "/my/file.sh"};
// Process
Process process = runtime.exec(command);
OutputStream out = process.getOutputStream();