您的位置:首页 > 编程语言 > Java开发

java 从控制台输入密码

2015-08-20 16:48 597 查看
如果想从控制台读取用户输入,我们一般用Scanner 类留可以了,但是其输入是可见的,所以Scanner类不适用于从控制台读取密码。Java SE 6 引入了Console类实现这个目的。Java.lang.System类提供静态方法console()获取Console类的实例。

•static Console console()

Console类提供几个静态方法读取用户输入

不带提示信息读取一行输入

•static char[] readLine()

带提示信息和格式参数读取一行输入

•static String readLine(String prompt, Object… args )

不带提示信息读取密码

•static char[] readPassword()

带提示信息和格式参数读取密码

•static char[] readPassword(String prompt, Object… args )

注意:该方法只能在控制台命令行中使用,不能在java IDE中使用(会抛出java.lang.NullPointerException)。

下面给出示例:

public class TestConsole {
public void testConsole() {
// 获取Console对象
Console cons = System.console();
if(cons != null){
System.out.println();
// 输入用户名,后面的格式参数省略
String name = cons.readLine("name: ");
// 输入密码, 后面的格式参数省略
char[] pwd = cons.readPassword("password: ");
System.out.println("Hello! \nYour name is: " + name);
System.out.println("Your password is: " + new String(pwd));
} else {
System.out.println("Couldn't get Console instance, maybe you're running this from within an IDE?");
System.exit(0);
}
}
public static void main(String[] args) {
new TestConsole().testConsole();
}
}


测试结果如下:



为了安全,返回的密码存放在一维字符数组中,而不是字符串中。在对密码进行处理之后,应该马上用一个填充值覆盖数组元素。

采用Console对象处理输入不如采用Scanner方便。每次只能读取一行输入,没有能够读取一个单词或一个数值的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: