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