JDK 6中新增的Java Console類功能概覽
JDK 6中提供了java.io.Console類專用來訪問基于字符的控制臺(tái)設(shè)備。如果你的Java程序要與Windows下的cmd或者Linux下的Terminal交互,就可以用這個(gè)Java Console類代勞。
TestConsole.java 代碼:
- package com.simon.testjdk6.console;
- import java.io.Console;
- public class TestConsole {
- /**
- * @param args
- */
- public static void main(String[] args) {
- Console console = System.console(); // 獲得Console實(shí)例對(duì)象
- if (console != null) { // 判斷是否有控制臺(tái)的使用權(quán)
- String user = new String(console.readLine("Enter username:")); // 讀取整行字符
- String pwd = new String(console.readPassword("Enter passowrd:")); // 讀取密碼,輸入時(shí)不顯示
- console.printf("Username is: " + user + "\n"); // 顯示用戶名
- console.printf("Password is: " + pwd + "\n"); // 顯示密碼
- } else {
- System.out.println("Console is unavailable."); // 提示無控制臺(tái)使用權(quán)限
- }
- }
- }
Java要與Console進(jìn)行交互,不總是能得到可用的Java Console類的。一個(gè)JVM是否有可用的Console,依賴于底層平臺(tái)和JVM如何被調(diào)用。如果JVM是在交互式命令行(比如Windows的cmd)中啟動(dòng)的,并且輸入輸出沒有重定向到另外的地方,那么就我們可以得到一個(gè)可用的Console實(shí)例。
當(dāng)你有Eclipse或NetBean中運(yùn)行以上代碼時(shí)Console中將會(huì)有以下文字輸出:
Console is unavailable.
表示Java程序無法獲得Console實(shí)例,是因?yàn)镴VM不是在命令行中被調(diào)用的,或者輸入輸出被重定向了。
在控制臺(tái)中運(yùn)行代碼,效果將如下所示:
- $ java com.simon.testjdk6.console.TestConsole
- Enter user:Simon
- Enter passowrd:
- User is:Simon
- Password is:12345
我們可以看到:輸入密碼時(shí),控制臺(tái)時(shí)不顯示我們所輸入的密碼字符。但是程序可以得到并輸出的密碼字符串。這就是JDK 6中新增的Java Console類的運(yùn)行方式。
【編輯推薦】