我有(用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的结果,而您要做的就是将其写入文件中。

10-05 22:43