【问题标题】:Redirecting Output of ProcessBuilder in Java 5/6?在 Java 5/6 中重定向 ProcessBuilder 的输出?
【发布时间】:2012-03-03 22:09:20
【问题描述】:

我正在寻找一种方法来重定向 Process / ProcessBuilder 的输出?我知道它在 Java 7 中是这样工作的:

ProcessBuilder builder = new ProcessBuilder(command);
builder.redirectOutput();
Process process = builder.start();

但是对于 Java 5/6,我需要相同的...任何帮助都非常感谢。

【问题讨论】:

    标签: java redirect process processbuilder


    【解决方案1】:

    Windows 7cmd 进程的示例代码,使用 Java 6

    ProcessBuilder processBuilder = new ProcessBuilder( "cmd" );        
    Process process = processBuilder.start();
    OutputStream stream = process.getOutputStream();
    

    getOutputStream() 方法的 Javadoc:说 "获取子进程的输出流。输出到流中被管道传输到这个 Process 对象所代表的进程的标准输入流中。"

    要重定向进程的输出,我认为您可以使用上面代码中定义的stream 对象。您可以将其写入控制台等。

    【讨论】:

    • 嘿驱逐者,非常感谢您的快速回复。只需使用 process.getInputStream() 并将其放入 InputStreamReader 即可完美:-)
    • @NicolasBaumgardt 欢迎您。但是在上面的代码中我使用了输出流,如果输入流是你想要的数据,使用它没问题。 :)
    • hm .. 我的目标是读出我构建的进程的标准输出,javadoc 说:“流从这个 Process 对象表示的进程的标准输出流中获取数据。”在这种情况下,javadoc 对我来说有点奇怪......
    • 有点混乱:p.getOutputStream() 返回p 的标准输入,p.getInputStream() 返回p 的标准输出。见Process
    • 这个答案不完整,因为它没有按要求重定向输出。它只是获取流引用,因此用户可以自己实现它。用户应该启动一个新线程来进行重定向并继续当前线程中的预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    相关资源
    最近更新 更多