tat*_*tou 1 java console input
我正在使用Scanner类通过控制台从用户那里获取一些输入.每当用户在屏幕上输入内容并按下输入时输入停留在屏幕上,例如:
这是提示//用户写入命令并按下回车键
//使用write command3
无论如何我可以让输入的命令在按下回车后不留在控制台中?
例如:
//用户写命令
简答:不,不是直接来自Java.Java对控制台的控制非常有限:您只能读取和写入它.控制台上显示的内容无法以编程方式擦除.
答案很简单:在Java中,所有控制台操作都是通过输入和输出System.in
流来处理的 - 是输入流,System.out
并且System.err
是输出流.正如你自己看到的那样,没有办法在Java中修改输出流 - 本质上,所有输出流确实是输出字节到某个目的地(这就是为什么它被称为"流"的一个原因 - 单向).*
我能看到的唯一解决方法是使用Console
对象(from System.console()
).具体而言,该readPassword()
方法不会回显用户键入的任何内容.但是,这种方法存在三个问题.首先,Console
该类仅适用于Java 1.6.其次,我不建议将此用于除密码以外的输入,因为它会使输入命令比预期更麻烦.第三,它仍然不会从屏幕上删除提示,这会破坏你想要实现的目标,我想.
*-从技术上说,System.out
和System.err
是的两个实例PrintStream
,但PrintStream
非常简单,只是一个柔性版OutputStream
-a PrintStream
仍然像在输出正常的输出流是单向操作.