java - 使用来自 Java 的重定向标准输入和标准输出运行外部程序

标签 java exec stdout stdin

我正在尝试从 Java 程序运行外部程序,但遇到了问题。基本上我想做的是:

 Runtime.getRuntime().exec("./extprogram <fileIn >fileOut");

但是我发现那行不通 - Java apparentls 需要将 Process 与输入和输出流以及我没有经验的其他东西一起使用。

我看过互联网上的许多示例(其中很多来自 SO),但似乎没有一种简单的标准方法可以做到这一点,对于那些不完全了解什么是继续下去,可能会非常令人沮丧。

我在尝试根据其他人的代码示例构建自己的代码时也遇到了麻烦,因为通常看来大多数其他人 1. 对重定向 stdin 不感兴趣,并且 2. 不感兴趣不必将 stdout 重定向到文件,而是重定向到 System.out

那么,有人能给我指出任何好的简单代码模板的方向,用于调用外部程序和重定向 stdinstdout 吗?谢谢。

最佳答案

你可以尝试这样的事情:

ProcessBuilder pb = new ProcessBuilder();
pb.redirectInput(new FileInputStream(new File(infile));
pb.redirectOutput(new FileOutputStream(new File(outfile));
pb.command(cmd);
pb.start().waitFor();

关于java - 使用来自 Java 的重定向标准输入和标准输出运行外部程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11336157/

相关文章:

go - Go 的分页输出

java - 在菜单栏中显示最近打开的项目

java - 每天没有收到本地警报通知

java - 原始类型在系统中是如何表示的? (Integer.toString(int) 为例)

php - exec ffmpeg 锁定服务器

PHP - Linux 上的 Ping exec 挂起脚本

java - 如何创建通用 XSD 类型

c - 子进程中的 Execl() 和父进程中的 wait()

c++ - 如何重定向 stdout 和 stderr 流(多平台)?

Rebol3 中的 stdout 和 stderr 端口?