JavaRush /Java Blog /Random-TW /如何在控制台輸入時隱藏密碼字元?
fatfaggy
等級 26
Киев

如何在控制台輸入時隱藏密碼字元?

在 Random-TW 群組發布
這就是問題所在。控制台應用程序,使用者輸入登入名稱和密碼。但是,在輸入密碼時,有必要用星號等「屏蔽」密碼的每個字符,或者像在 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