`

JDK 6中新增的Java Console类功能概览

    博客分类:
  • JAVA
阅读更多

JDK 6 中提供了 java.io.Console 类专用来访问基于字符的控制台设备。如果你的 Java 程序要与 Windows 下的 cmd 或者 Linux 下的 Terminal 交互,就可以用这个 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 实例对象       

        if (console != null) {              //  判断是否有控制台的使用权       

            String user = new String(console.readLine("Enter username:"));      //  读取整行字符       

            String pwd = new String(console.readPassword("Enter passowrd:"));   //  读取密码 , 输入时不显示       

            console.printf("Username is: " + user + "\n");      //  显示用户名       

            console.printf("Password is: " + pwd + "\n");   //  显示密码       

        } else {      

            System.out.println("Console is unavailable.");  //  提示无控制台使用权限       

        }      

     

    }      

     

}     

Java 要与 Console 进行交互,不总是能得到可用的 Java 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 

我们可以看到:输入密码时,控制台时不显示我们所输入的密码字符。但是程序可以得到并输出的密码字符串。这就是 JDK 6 中新增的 Java Console 类的运行方式。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics