Java并发运行外部程序,并通过标准输入/输出与其通信。

bluesky1年前 ⋅ 154 阅读

ChatGPT的回答仅作参考:

Java可以通过ProcessBuilder类来运行外部程序,并通过标准输入/输出与其通信。

以下是一个简单的示例,演示如何运行外部程序并读取其输出:

```java
ProcessBuilder pb = new ProcessBuilder("ls", "-l");
Process p = pb.start();

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}

p.waitFor();
```

在上面的示例中,我们使用ProcessBuilder类创建一个进程,该进程运行“ls -l”命令。然后,我们使用getInputStream()方法获取进程的标准输出流,并使用BufferedReader类读取输出。最后,我们使用waitFor()方法等待进程完成。

类似地,我们可以使用ProcessBuilder类的其他方法来获取进程的标准输入流,并将数据写入该流,以便与外部程序进行通信。例如:

```java
ProcessBuilder pb = new ProcessBuilder("grep", "hello");
Process p = pb.start();

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
writer.write("hello world\n");
writer.flush();

p.waitFor();
```

在上面的示例中,我们使用ProcessBuilder类创建一个进程,该进程运行“grep hello”命令。然后,我们使用getOutputStream()方法获取进程的标准输入流,并使用BufferedWriter类将数据写入该流。最后,我们使用waitFor()方法等待进程完成。

全部评论: 0

    相关推荐