我有一个Java程序,它从Users获取输入并根据输入显示输出。该程序为用户提供了一个选项菜单,用户需要从菜单中选择一个选项。
现在我必须通过批处理文件运行这个程序,并将这个程序的输出流到另一个文件中。我通过在bat文件中使用以下代码来实现这一点。
java -jar ./dist/MP4.jar > ./docs/mp4out.txt
但是当这个bat文件运行时,命令提示符将永远不会显示菜单并要求用户输入,因为所有java程序的输出都被重定向到文件中。所以我的问题是我如何使命令提示符显示菜单并等待用户输入,并将所有程序输出重定向到一个文件?
不使用System.out.println()
,使用System.err.println()
作为菜单输出。那么您的重定向将只捕获发送到系统的内容。输出(STDOUT)和不想要的转到System.err.
注意:上面是一个hack,为什么不改变你的代码写到输出文件,而不是要求重定向?您可以将其设置为可选的,并在需要时写入标准输出。
这与你想要的相反:将Windows cmd stdout和stderr重定向到单个文件
如果我理解正确的话,您所要做的就是允许用户在while循环中输入一些东西,例如
while(userInput != optionThatEndsMenu) { askInput....}
然后,使用printwwriter创建一个新文件,如
PrintWriter outputFile = new PrintWriter(<fileName>);
outputFile.println(//whatever you have to output goes here);
,然后将程序的内容打印到文件中
Tee过滤器是同时重定向到文件和屏幕的传统方法。