JDK 6中新增的Java Console类功能及常见问题
来源:互联网 发布:mac如何打包文件 编辑:程序博客网 时间:2024/06/16 00:07
JDK 6中提供了java.io.Console类专用来访问基于字符的控制台设备。如果你的Java程序要与Windows下的cmd或者Linux下的Terminal交互,就可以用这个Java 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进行交互,不总是能得到可用的Java Console类的。一个JVM是否有可用的Console,依赖于底层平台和JVM如何被调用。如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就我们可以得到一个可用的Console实例。
当你有Eclipse或NetBean中运行以上代码时Console中将会有以下文字输出:
Console is unavailable.
表示Java程序无法获得Console实例,是因为JVM不是在命令行中被调用的,或者输入输出被重定向了。
在控制台中运行代码,效果将如下所示:
1.$ java com.simon.testjdk6.console.TestConsole
2.Enter user:Simon
3.Enter passowrd:
4.User is:Simon
5.Password is:12345
我们可以看到:输入密码时,控制台时不显示我们所输入的密码字符。但是程序可以得到并输出的密码字符串。这就是JDK 6中新增的Java Console类的运行方式。
注意:在Eclipse诸如类似的IDE工具中运行Console类。如果没有对Console实例判空操作,结果使用了该实例会抛出java.lang.NullPointerException异常。
来源:http://user.qzone.qq.com/547026345/infocenter
PS: 准确来说,使用eclipse或其他Java IDE就有可能出现 Console为空的状况,在命令提示符下就么有事了。不过Console的使用起来怎么都感觉在学习VC++中CLR标准的Console,有点多此一举。
- JDK 6中新增的Java Console类功能及常见问题
- JDK 6中新增的Java Console类功能及常见问题
- JDK 6中新增的Java Console类功能及常见问题
- 使用Java SE 6新增类Console的小例子
- JAVA SE 6中新增的Instrumentation功能
- Java中Console类的用法
- JDK 1.5中新增的语言特性
- JAVA--实现类似C#输入功能的Console类
- [Java] Java中Console类
- java中使用队列:java.util.Queue(JDK 5新增)
- .NET 4.0中数组的新增功能
- SQL 2008中XML的新增功能
- Java中Console类源码
- Java中创建URL的常见问题及解决方案
- Java中创建URL的常见问题及解决方案
- CSS3中新增功能
- MySQL5.6中新增特性、不推荐使用的功能以及废弃的功能
- MySQL5.6中新增特性、不推荐使用的功能以及废弃的功能
- APT持续性渗透攻击未来将出现更多挑战
- pkg-config的用法
- java 强引用,弱引用,虚引用
- 查看系统端口占用情况
- 采药
- JDK 6中新增的Java Console类功能及常见问题
- ora-00600: internal error code, arguments: [kpotcgah-7], [12534], [ora-12534: TNS:operation not supp
- 使用OpenCV函数读入、播放视频文件并获取视频相应属性
- 宿主进程 [*.vshost.exe] & [*.vshost.exe.config]
- Eclipse 自动提示
- SCL验证工具
- Android group listview
- HibernateDaoSupport
- [教程] Flash Socket通信的安全策略问题 843端口