我正在使用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系统的提示)。
答案 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