显示java程序的输出并将其从命令提示符复制到文件中
我有一个Java程序,它从用户那里获取输入并根据输入显示输出。该程序向用户提供选项菜单,用户需要从菜单中选择一个选项 现在我必须通过一个批处理文件运行这个程序,并将这个程序的输出流到另一个文件中。我通过在bat文件中使用以下代码来实现这一点显示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 -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过滤器是同时重定向到文件和屏幕的传统方法