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()方法等待进程完成。