我有在Windows XP的JVM中与Runtime.exec()一起使用的String。
String cmd = encoderFull + " " + "-i " + originalFull + " "+ "-bitrate" + " " + bitrateVBR[i] + " " + "-bvhq"+ " " + "-avi " + outputFull + " " + "2>&1" + " " + "1>"+ outputFile + ".txt";
不幸的是,‘2>&1 1> output.txt’无法正常工作。其余的还可以。有没有一种使用命令的方式来创建此文件?
再见,大卫
基本上,不-Runtime.exec()不支持您要执行的操作。
请注意,Runtime.exec 不是 外壳程序- 在您显然使用的exec(String)情况下,它将令牌化字符串(使用空格作为分隔符),并尝试将第一个令牌作为程序执行,其余令牌作为该程序的参数。
因此,在您的情况下,重定向运算符将作为参数发送到以’encoderFull’变量命名的应用程序-外壳程序将不会像您期望的那样解释它们,因为没有外壳程序。
据我所知,您有两种选择:
编写一个批处理文件(对于Windows)或Shell脚本(对于* nix),该文件将执行您的应用程序并执行重定向。然后使用Runtime.exec(),以批处理文件/ shell脚本为参数,调用外壳程序(cmd或sh或您拥有什么)
从Runtime.exec创建的进程中读取输出流,然后使用java io将内容写入相应的文件
我强烈建议#1推荐#2
在继续之前,您可能还应该阅读有关“何时Runtime.exec()不会- 导航与Runtime.exec()方法相关的陷阱”的文章。