将运行时exec()OutputStream打印到控制台

我想获得OutputStream的的Process通过启动exec()到控制台。如何才能做到这一点?


这是一些不完整的代码:


import java.io.BufferedReader;

import java.io.File;

import java.io.IOException;

import java.io.OutputStream;

import java.io.PrintStream;

import java.io.Reader;


public class RuntimeTests

{

    public static void main(String[] args)

    {

        File path = new File("C:\\Dir\\Dir2");

        String command = "cmd /c dir";

        Reader rdr = null;

        PrintStream prtStrm = System.out;

        try

        {

            Runtime terminal = Runtime.getRuntime();


            OutputStream rtm = terminal.exec(command, null, path).getOutputStream();

            prtStrm = new PrintStream(rtm);

            prtStrm.println();

        } 

        catch (IOException e)

        {

            e.printStackTrace();

        }

    }

}


一只斗牛犬
浏览 1289回答 4
4回答

慕后森

在调用process.waitFor()之后,您需要启动一个新线程来读取终端输出流并将其复制到控制台。

侃侃尔雅

我最近遇到了这个问题,只想提及自Java 7以来,流程构建器api已得到扩展。现在可以使用以下方法解决此问题:ProcessBuilder pb = new ProcessBuilder("yourcommand");pb.redirectOutput(Redirect.INHERIT);pb.redirectError(Redirect.INHERIT);Process p = pb.start();

慕田峪9158850

我遇到了类似的问题,并且正在使用以下代码。Process p = Runtime.getRuntime().exec(".....");p.waitFor();String line;BufferedReader error = new BufferedReader(new InputStreamReader(p.getErrorStream()));while((line = error.readLine()) != null){    System.out.println(line);}error.close();BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));while((line=input.readLine()) != null){    System.out.println(line);}input.close();OutputStream outputStream = p.getOutputStream();PrintStream printStream = new PrintStream(outputStream);printStream.println();printStream.flush();printStream.close();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java