JavaRush /Java 博客 /Random-ZH /如何在控制台输入时隐藏密码字符?
fatfaggy
第 26 级
Киев

如何在控制台输入时隐藏密码字符?

已在 Random-ZH 群组中发布
这就是问题所在。控制台应用程序,用户输入登录名和密码。但是,在输入密码时,有必要用星号等“屏蔽”密码的每个字符,或者像在 Linux 中那样,在输入密码时根本不显示任何字符。我找到了一个使用单独线程的选项。它看起来像这样: package main; import java.io.*; public class Main { public static void main(String[] args) { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter username: "); String user = in.readLine(); Thread hide = new PasswordsHider("Enter password: "); hide.start(); String pass = in.readLine(); hide.interrupt(); } private static class PasswordsHider extends Thread { public PasswordsHider(String prompt) { super("Hiding passwords thread"); System.out.print(prompt); } @Override public void run() { while (!isInterrupted()) { System.out.print("\010"); try { Thread.sleep(1); } catch (InterruptedException e) { //e.printStackTrace(); } } } } } 但在执行过程中,不是“覆盖”输入的字符,而是在屏幕上简单地显示一堆空格:)我尝试使用“\010*”而不是“\010”,但随后出现一个星号添加到每个空格))当“\b”在输出中再次有很多空格时。也许如果你从命令行运行它,它会起作用,但从理论上讲 - 这就是我编写它的方式。我听说这是 Eclipse 中的一个低优先级错误,但只字不提这个想法。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION