Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显示java程序的输出并将其从命令提示符复制到文件中_Java_Batch File_Cmd_Java Io - Fatal编程技术网

显示java程序的输出并将其从命令提示符复制到文件中

显示java程序的输出并将其从命令提示符复制到文件中,java,batch-file,cmd,java-io,Java,Batch File,Cmd,Java Io,我有一个Java程序,它从用户那里获取输入并根据输入显示输出。该程序向用户提供选项菜单,用户需要从菜单中选择一个选项 现在我必须通过一个批处理文件运行这个程序,并将这个程序的输出流到另一个文件中。我通过在bat文件中使用以下代码来实现这一点 java -jar ./dist/MP4.jar > ./docs/mp4out.txt 但是当这个bat文件运行时,命令提示符将永远不会显示菜单并询问用户输入,因为所有java程序输出都被重定向到该文件中。因此,我的问题是如何使命令提示符显示菜单并

我有一个Java程序,它从用户那里获取输入并根据输入显示输出。该程序向用户提供选项菜单,用户需要从菜单中选择一个选项

现在我必须通过一个批处理文件运行这个程序,并将这个程序的输出流到另一个文件中。我通过在bat文件中使用以下代码来实现这一点

java -jar ./dist/MP4.jar > ./docs/mp4out.txt

但是当这个bat文件运行时,命令提示符将永远不会显示菜单并询问用户输入,因为所有java程序输出都被重定向到该文件中。因此,我的问题是如何使命令提示符显示菜单并等待用户输入,以及将所有程序输出重定向到文件中?

而不是使用
System.out.println()
使用
System.err.println()
作为菜单输出。然后重定向将只捕获发送到System.out(STDOUT)的内容,而不希望转到System.err

注意:以上是一点黑客行为,为什么不将代码更改为写入输出文件,而不是要求重定向?您可以将其设置为可选,并在需要时写入stdout


这与您想要的正好相反:

如果我理解正确,您所要做的就是允许用户在while循环中输入一些内容,例如

    while(userInput != optionThatEndsMenu) { askInput....}
然后,只需使用PrintWriter创建一个新文件,如

    PrintWriter outputFile = new PrintWriter(<fileName>);
    outputFile.println(//whatever you have to output goes here);
PrintWriter outputFile=new PrintWriter();
println(//必须输出的内容都在这里);

这将把程序的内容打印到文件中。

Tee过滤器是同时重定向到文件和屏幕的传统方法