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

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97