为什么我不能在java运行时中使用日志文件

为什么我不能在java运行时中使用日志文件,java,runtime,exec,runtime.exec,Java,Runtime,Exec,Runtime.exec,我有(爪哇语) 当我在终端上运行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不知道该怎么做 另一种方法是,当您

我有(爪哇语)

当我在终端上运行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
方法执行某些程序时,通过
rt.exec()
获取返回的值。 可以为应用程序提供OutputStream、应用程序的InputStream,甚至为已启动的应用程序提供ErrorStream


使用InputStream,您可以通过编程读取qq.exe的结果,只需将其写入文件。

Java 7添加了允许将输入/输出/错误流重定向到文件或从文件重定向到文件的ProceBuilder.Redirect类。它可以这样使用:

    ProcessBuilder builder = new ProcessBuilder("cat", "/proc/meminfo");
    // Append all errors from process to log file:
    builder.redirectError(Redirect.appendTo(new File("/tmp/my.log")));
    Process process = builder.start();

使用相应的方法可以重定向输入和输出。完整的例子如下:。

thnx很多。次要更正:它不是OutputStream,而是InputStream。程序的输出进入输入流。OutputStream是我们输入程序的输出。。。
    ProcessBuilder builder = new ProcessBuilder("cat", "/proc/meminfo");
    // Append all errors from process to log file:
    builder.redirectError(Redirect.appendTo(new File("/tmp/my.log")));
    Process process = builder.start();