【问题标题】:How do you pipe an OutputStream and InputStream to console?如何通过管道将 OutputStream 和 InputStream 传输到控制台?
【发布时间】:2011-07-12 21:54:08
【问题描述】:

运行进程时,如何将其输出到System.out 并将其输入到System.in

Process p = Runtime.getRuntime().exec("cubc.exe");
// do something with p.getOutputStream())

编辑:我想我解释错了;我不想输入到程序中,我希望用户输入到程序中,我不想读取输出,我希望用户读取输出。

【问题讨论】:

    标签: java inputstream outputstream


    【解决方案1】:

    使用来自 Apache 的 IOUtilsCommons IO

    Process p = Runtime.getRuntime().exec("cubc.exe");
    IOUtils.copy(p.getInputStream(), System.out);
    

    【讨论】:

    • 我想我解释错了;我不想向程序输入,我希望用户向程序输入,我不想读取输出,我希望用户读取输出。
    • @personak 这可以满足您的需求。 Process 方法的命名有点令人困惑:getInputStream() 为您提供一个包含进程的输出 的输入流,这就是这里转发给System.out 的内容,这是什么你需要。
    • 我明白了——这更有意义。
    【解决方案2】:

    您可以通过这种方式获取输入:

    Scanner scan = new Scanner(p.getInputStream());
    

    关于输出流,你可以用同样的方法抓取它,并使用 System.out.* 方法打印它:

    OutputStream os = p.getOutputStream();
    

    【讨论】:

    • Downvoter - 如果你不介意解释一下,我会得到纠正。
    【解决方案3】:

    你不能用 Java 本身来做到这一点。您可以做的是创建您的进程并使用PipedOutputStream 捕获输出,然后将其写入 System.out.println。除此之外,我认为没有其他办法了。

    【讨论】:

    • 我认为System.Console.WriteLine 是C#。
    • 在 Java 中是 System.out.println
    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    相关资源
    最近更新 更多