Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java将外部程序调用的输出保存在文本文件中_Java_Runtime_Exec - Fatal编程技术网

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

用java将外部程序调用的输出保存在文本文件中,java,runtime,exec,Java,Runtime,Exec,我正在使用Windows 我想从java命令行调用一个名为“saucy.exe”的小型.exe应用程序。它需要一个输入文件“input.saucy”。两者都存储在正确的目录中 当我使用命令时 Process p = Runtime.getRuntime().exec("saucy input.saucy"); 一切正常,我在控制台上得到一个输出 但是,当我尝试将输出写入文件时 Process p = Runtime.getRuntime().exec("saucy input.saucy &g

我正在使用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");
什么也没发生

我已在中找到建议,并尝试手动标记该命令:

String[] cmd = {"saucy", "input.saucy > output.saucy"};
Process p = Runtime.getRuntime().exec(cmd);
它仍然不起作用。有什么建议吗?我没有选择用java代码将输出写入文件,因为它太慢了


再次说明:我在使用Windows(我强调这一点,因为我读了一些关于Linux系统的提示)。

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


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

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

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

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();

是一个shell命令,但您没有使用它。试试
String[]cmd={“cmd”,“/C”,“saucy-input.saucy>output.saucy”}嗨,这就是解决方案!非常感谢你!将其添加为答案,以便您可以通过在左侧勾选来接受。;)如果你现在告诉我如何执行程序,如果它在文件夹中(例如“文件夹”)。我尝试了
String[]cmd={“cmd”,“/C”,“folder/saucy-input.saucy>output.saucy”}
String[]cmd={“cmd”,“/C”,“folder\\saucy input.saucy>output.saucy”}这给了我一个错误:找不到应用程序“文件夹”。当您给出相对路径时,它是相对于当前工作目录的。如果你不知道那将是什么,你需要给出一个完整的路径,比如
C:\\basedirectory\\folder\\saucy