JavaRush /Java Blog /Random-JA /コンソール入力中にパスワード文字を非表示にするにはどうすればよいですか?
fatfaggy
レベル 26
Киев

コンソール入力中にパスワード文字を非表示にするにはどうすればよいですか?

Random-JA グループに公開済み
これが質問です。コンソール アプリケーションでは、ユーザーはログイン名とパスワードを入力します。ただし、パスワードを入力するときは、パスワードの各文字をアスタリスクなどで「マスク」するか、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