为什么我不能在 java 运行时使用日志文件
我有(在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 文件。
是什么原因导致这个问题以及有什么解决办法吗?
I have (in java),
rt.exec("qq.exe -i ..(some other parameters) > qq.log");//*1
when I run qq.exe -i ..(some other parameters) > qq.log in terminal It works fine and keeps the qq.log file correctly.
However using rt.exec (*1) doesnt work. " > qq.log" part causes problem. When I delete that part rt.exec (*1) works but I cant have qq.log file this time.
What causes this problem and Is there any soln??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
rt.exec()
无法执行 sh/bat 代码。它只是调用另一个程序。当您尝试使用 shell 特有的>
符号重定向 qq.exe 的输出流时,java 不明白该怎么做。另一种方法是,当您使用 exec 方法执行某个程序时,获取
进程
由rt.exec()
返回。进程
可以为您提供应用程序的OutputStream、应用程序的InputStream,甚至启动应用程序的ErrorStream。使用InputStream,您可以以编程方式读取qq.exe的结果,您所要做的就是将其写入文件中。
rt.exec()
can't execute sh/bat code. It's just invoking another program. When you try to redirect the output stream of qq.exe with the>
symbol, which is specific to shell, java doesn't understand what to do.An alternative is when you execute some program with the
exec
method, get theProcess
returned byrt.exec()
.A
Process
can give you an OutputStream to the application, an InputStream from the application and even an ErrorStream for a started application.With the InputStream, you can programmatically read the result of qq.exe and all you have to do is to write this into a file.
Java 7 添加了 ProcesBuilder.Redirect 类,允许将输入/输出/错误流重定向到文件或从文件重定向。它可以这样使用:
使用相应的方法可以重定向输入和输出。完整的示例如下:在 Java 7 中运行外部进程。
Java 7 added ProcesBuilder.Redirect class that allows to redirect input/output/error streams to/from files. It can be used like this:
Using corresponding methods you can redirect input and output. The full example is here: Run external process in Java 7.