按Enter键后如何使Java控制台输入消失

tat*_*tou 1 java console input

我正在使用Scanner类通过控制台从用户那里获取一些输入.每当用户在屏幕上输入内容并按下输入时输入停留在屏幕上,例如:

这是提示//用户写入命令并按下回车键

  • 命令
  • 命令输出到这里

//使用write command3

  • 命令
  • 命令输出到这里
  • 指令代码
  • command3的输出到这里

无论如何我可以让输入的命令在按下回车后不留在控制台中?

例如:

//用户写命令

  • 命令输出到这里

hbw*_*hbw 5

简答:不,不是直接来自Java.Java对控制台的控制非常有限:您只能读取和写入它.控制台上显示的内容无法以编程方式擦除.

答案很简单:在Java中,所有控制台操作都是通过输入和输出System.in流来处理的 - 是输入流,System.out并且System.err是输出流.正如你自己看到的那样,没有办法在Java中修改输出流 - 本质上,所有输出流确实是输出字节到某个目的地(这就是为什么它被称为"流"的一个原因 - 单向).*

我能看到的唯一解决方法是使用Console对象(from System.console()).具体而言,该readPassword()方法不会回显用户键入的任何内容.但是,这种方法存在三个问题.首先,Console该类仅适用于Java 1.6.其次,我不建议将此用于除密码以外的输入,因为它会使输入命令比预期更麻烦.第三,它仍然不会从屏幕上删除提示,这会破坏你想要实现的目标,我想.

*-从技术上说,System.outSystem.err是的两个实例PrintStream,但PrintStream非常简单,只是一个柔性版OutputStream-a PrintStream仍然像在输出正常的输出流是单向操作.