在java中的文本文件中保存外部程序调用的输出

时间:2012-10-08 17:56:54

标签: java runtime exec

我正在使用Windows!

我想从我的java命令行调用一个小的.exe应用程序,名为“saucy.exe”。它需要一个输入文件“input.saucy”。两者都存储在正确的目录中。

当我使用命令

Process p = Runtime.getRuntime().exec("saucy input.saucy");

一切正常,我在控制台上输出。

但是,当我尝试将输出写入文件

Process p = Runtime.getRuntime().exec("saucy input.saucy > output.saucy");
没有任何反应。

我已经在http://www.ensta-paristech.fr/~diam/java/online/io/javazine.html找到了建议,并试图手动对命令进行标记:

String[] cmd = {"saucy", "input.saucy > output.saucy"};
Process p = Runtime.getRuntime().exec(cmd);

它仍然无效。有什么建议?我没有选择将输出写入带有java代码的文件,因为它太慢了。

再次:我正在使用Windows(我强调这是因为我读了几个Linux系统的提示)。

3 个答案:

答案 0 :(得分:1)

>是一个shell命令,但你没有使用它。试试

String[] cmd = { "cmd", "/C", "saucy input.saucy > output.saucy" }; 

答案 1 :(得分:1)

如果您使用的是Java 7,则可以使用新的ProcessBuilder.redirectOutput机制:

ProcessBuilder pb = new ProcessBuilder("saucy", "input.saucy");

// send standard output to a file
pb.redirectOutput(new File("output.saucy"));
// merge standard error with standard output
pb.redirectErrorStream(true);

Process p = pb.start();

答案 2 :(得分:0)

使用getInputStream()getOutputStream()getErrorStream()检索输出(或发送输入)。

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Process.html