JDK6.0新特性:用Console開發控制臺程序
發表于:2007-07-04來源:作者:點擊數:
標簽:
JDK6中提供了 java .io.Console類專用來訪問基于字符的控制臺設備. 你的程序如果要與 Windows 下的cmd或者 Linux 下的Terminal交互,就可以用Console類代勞. 但我們不總是能得到可用的Console, 一個JVM是否有可用的Console依賴于底層平臺和JVM如何被調用. 如
JDK6中提供了
java.io.Console類專用來訪問基于字符的控制臺設備. 你的程序如果要與
Windows下的cmd或者
Linux下的Terminal交互,就可以用Console類代勞. 但我們不總是能得到可用的Console, 一個JVM是否有可用的Console依賴于底層平臺和JVM如何被調用. 如果JVM是在交互式命令行(比如Windows的cmd)中啟動的,并且輸入輸出沒有重定向到另外的地方,那么就可以得到一個可用的Console實例. 下面代碼演示了Console類的用法:
clearcase/" target="_blank" >cccccc width="90%" align=center bgColor=#e7e9e9 border=1>
/** * @author chinajash */ public class ConsoleTest { public static void main(String[] args) { Console console = System.console();//獲得Console實例 if(console!=null){//判斷console是否可用 String user = new String(console.readLine("Enter user:")); //讀取整行字符 String pwd = new String(console.readPassword("Enter passowrd:")); //讀取密碼,密碼輸入時不會顯示 console.printf("User is:"+user+"\n"); console.printf("Password is:"+pwd+"\n"); }else{ System.out.println("Console is unavailable"); } } } |
如果在NetBean5.5里面運行上面程序,會輸出
Console is unavailable
表示Console不可獲得,那是因為JVM不是在命令行中被調用的或者輸入輸出被重定向了. 但是如果我們在命令行中運行上面程序(java ConsoleTest),程序能夠獲得Console實例,并執行如下:
Enter user:chinajash Enter passowrd: User is:chinajash Password is:chinajash |
在這里可以看到輸入密碼時,控制臺時不顯示這些密碼字符的,但是程序可以得到輸入的密碼字符串,這與Linux下面輸入密碼的情況是一樣的。
原文轉自:http://www.anti-gravitydesign.com