java - 进程需要重定向输入

标签 java processbuilder

我有一个 UNIX native 可执行文件,需要像这样输入参数

prog.exe < foo.txt.

foo.txt 有两行: 酒吧 巴兹

我正在使用 java.lang.ProcessBuilder 来执行这个命令。不幸的是,prog.exe 只能使用来自文件的重定向。有什么方法可以在 Java 中模仿这种行为吗?

当然,

ProcessBuilder pb = new ProcessBuilder("prog.exe", "bar", "baz"); 

不起作用。

谢谢!

最佳答案

ProcessBuilder pb = new ProcessBuilder("prog.exe");
Process p = pb.start();
OutputStream pos = p.getOutputStream();

InputStream fis = new FileInputStream("file.txt");
byte[] buffer = new byte[1024];
int read = 0;
while((read = fis.read(buffer)) != -1) {
    pos.write(buffer, 0, read);
}
fis.close();

未经测试,但像这样的东西应该可以工作。

关于java - 进程需要重定向输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2969766/

相关文章:

java - 是否有半年广告季度年的任何日期格式

java - Java 中的 HMI 编辑器

java - 在命令提示符下运行 Windows 扫描程序以获取来自 Java 的文件

java - 如何让 ProcessBuilder 处理嵌套引号?

java - 如何使用java访问unix shell特殊变量

java - 通过 processbuilder 进行多进程通信,卡住在 BufferedReader() 的 readline() 处

java - 如何在 JSP 中单击一个按钮来提交来自 for 循环的多个表单

java - 尝试使用 JFugue 解析时出现 Musixml 解析异常,如何解决此问题?

java - 如何创建一个 java.sql.Array 字符串?

java - 在 Java JDK 1.6 中,我需要运行一个接受重定向输入的可执行文件