用java将外部程序调用的输出保存在文本文件中
我正在使用Windows 我想从java命令行调用一个名为“saucy.exe”的小型.exe应用程序。它需要一个输入文件“input.saucy”。两者都存储在正确的目录中 当我使用命令时用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
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