由于Scanner类输入是可见的,故Scanner类不适用于从控制台读取密码。从Java se 6开始加入了Console类来解决此问题。
要想读取账号密码,可以参考以下代码:
public class Test_Console {
publicstatic void main(String[] args) {
Consolec = System.console();
Stringusername = c.readLine("User name:");
c.printf("user:"+username+"\n");
char []passwd =c.readPassword("Password:");
c.printf(String.valueOf(passwd));
}
}但是怎么运行这段代码呢,直接运行?
Exception in thread "main" java.lang.NullPointerException
at test_char.Test_Console.main(Test_Console.java:9)
顾名思义,这个类是从控制台获取账号密码的,所以打开dos命令窗,编译并执行相应代码。
反复找.Java文件太麻烦?
在Test_Console.java相同目录下,右键-记事本,将以下内容写在记事本里。
javac Test_Console.java
java Test_Console
pause
保存,文件名后缀为.bat,双击执行。输入账号密码-回车
就可以打印出账号密码啦,只是密码输入时是不可见的。
同时要注意,在主类里面不能有package,否则会出现主类无法加载的情况。
本文介绍如何利用Java的Console类安全地从控制台读取用户的账号和密码,并提供了一个示例代码。通过编译并执行特定的批处理文件,用户可以在控制台上输入密码而不会显示输入的内容。
1万+

被折叠的 条评论
为什么被折叠?



