我有(用Java)
rt.exec("qq.exe -i ..(some other parameters) > qq.log");//*1
当我在终端中运行qq.exe -i ..(一些其他参数)> qq.log时,它工作正常并正确保存了qq.log文件。
但是使用rt.exec(* 1)不起作用。 “> qq.log”部分导致问题。当我删除该部分时,rt.exec(* 1)可以工作,但是这次我无法拥有qq.log文件。
是什么导致此问题,并且有解决方案吗?
最佳答案
rt.exec()
无法执行sh / bat代码。它只是在调用另一个程序。当您尝试使用特定于Shell的>
符号重定向qq.exe的输出流时,java无法理解该怎么做。
一种替代方法是,当您使用exec
方法执行某些程序时,获取Process
返回的 rt.exec()
。
Process
可以为您提供到应用程序的OutputStream,来自应用程序的InputStream甚至是已启动应用程序的ErrorStream。
使用InputStream,您可以以编程方式读取qq.exe的结果,而您要做的就是将其写入文件中。