执行命令的Java程序将无法继续

时间:2015-03-08 12:42:46

标签: java

我尝试让我的笔画在java中工作。 我有一个开始,但我不知道如何继续。 这就是我所拥有的:

public static void main(String[] args) {

        try {
            Runtime runTime = Runtime.getRuntime();

            Process process = runTime.exec("chiplotle");


            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));

            String line = null;

            System.out.println("this prints fine");


            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }


            System.out.println("it never reaches this...");

        }
        catch (IOException e) {
            e.printStackTrace();
        }

    }

这是控制台中的输出:

IntelliJ console

我自己打了11个。但它并没有做任何事情。 它也永远不会打印:

System.out.println("it never reaches this...");

所以看起来我的程序暂停输入,这是正确的吗? 我怎样才能更进一步?

1 个答案:

答案 0 :(得分:1)

  1. 你应该在bacgkround线程中读取InputStream。
  2. 您需要获取Process的OutputStream然后写入它。

  3. OutputStream os = process.getOutputStream();
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
    PrintWriter pw = new PrintWriter(bw);
    
    // now you can write to the Process, i.e., pw.println("11");
    

    您不仅需要打印,还需要分析InputStream发送给您的文本,以决定何时通过PrintWriter写回流程。