0

我正在使用 Windows!

我想从我的 java 命令行中调用一个名为“saucy.exe”的小型 .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 系统的提示)。

4

3 回答 3

1

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

String[] cmd = { "cmd", "/C", "saucy input.saucy > output.saucy" }; 
于 2012-10-09T10:06:28.993 回答
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();
于 2012-10-09T10:20:34.983 回答
0

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

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

于 2012-10-08T18:42:50.223 回答