我有这个字符串,我在Windows XP的JVM中使用Runtime.exec().
String cmd = encoderFull + " " + "-i " + originalFull + " "+ "-bitrate" + " " + bitrateVBR[i] + " " + "-bvhq"+ " " + "-avi " + outputFull + " " + "2>&1" + " " + "1>"+ outputFile + ".txt";
不幸的是'2>&1 1> output.txt'不起作用.其余的都没问题.有没有办法使用命令,以便创建此文件?
再见,大卫
Gre*_*eek 10
基本上,没有 - Runtime.exec()不支持您尝试执行的操作.
请注意,Runtime.exec 不是 shell - 在exec(String)的情况下,您显然正在使用它,它将字符串标记(以空格作为分隔符),并尝试将第一个标记作为程序执行,其余的令牌作为该计划的参数.
因此,在您的情况下,重定向操作符将作为参数发送到由'encoderFull'变量命名的应用程序 - 它们不会被shell解释,因为没有shell.
据我所知,你有两个选择:
编写批处理文件(对于Windows)或shell脚本(对于*nix),它执行您的应用程序并执行重定向.然后使用Runtime.exec()以批处理文件/ shell脚本作为参数调用shell(cmd或sh,或者你有什么)
从Runtime.exec创建的进程中读取输出流,并使用java io将内容写入相应的文件
我强烈推荐#1赞成#2
您可能还应该阅读这篇文章"当Runtime.exec()不会 -在继续前进之前,自己导航一下与Runtime.exec()方法相关的陷阱".
| 归档时间: |
|
| 查看次数: |
1628 次 |
| 最近记录: |