论坛首页 Java版

JDK 6 新特性 - console:基于控制台的Java程序

浏览 952 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-06-25 关键字: JDK 6

JDK6中提供了java.io.Console类专用来访问基于字符的控制台设备。如果你的Java程序要与Windows下的cmd或者Linux下的Terminal交互,就可以用Console类代劳。

TestConsole.java 代码:
  1. package com.simon.testjdk6.console;   
  2.   
  3. import java.io.Console;   
  4.   
  5. public class TestConsole {   
  6.   
  7.     /**  
  8.      * @param args  
  9.      */  
  10.     public static void main(String[] args) {   
  11.         Console console = System.console(); // 获得Console实例对象   
  12.         if (console != null) {              // 判断是否有控制台的使用权   
  13.             String user = new String(console.readLine("Enter username:"));      // 读取整行字符   
  14.             String pwd = new String(console.readPassword("Enter passowrd:"));   // 读取密码,输入时不显示   
  15.             console.printf("Username is: " + user + "\n");      // 显示用户名   
  16.             console.printf("Password is: " + pwd + "\n");   // 显示密码   
  17.         } else {   
  18.             System.out.println("Console is unavailable.");  // 提示无控制台使用权限   
  19.         }   
  20.   
  21.     }   
  22.   
  23. }   

Java要与Console进行交互,不总是能得到可用的Console的。一个JVM是否有可用的Console,依赖于底层平台和JVM如何被调用。如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就我们可以得到一个可用的Console实例。

当你有Eclipse或NetBean中运行以上代码时Console中将会有以下文字输出:
 

Console is unavailable.


表示Java程序无法获得Console实例,是因为JVM不是在命令行中被调用的,或者输入输出被重定向了。 

在控制台中运行代码,效果将如下所示:

$ java com.simon.testjdk6.console.TestConsole
Enter user:Simon
Enter passowrd:
User is:Simon
Password is:12345

我们可以看到:输入密码时,控制台时不显示我们所输入的密码字符。但是程序可以得到并输出的密码字符串。

   
论坛首页 Java版

跳转论坛:
JavaEye推荐