我们何时应该使用控制台类?

时间:2012-12-26 11:10:24

标签: console java.util.scanner bufferedreader java-6 java-5

我正在阅读有关Console课程的内容,在第一行中,它是写的

  

Java 6新手,当我们从命令行运行Java SE 6时,我们通常使用控制台类对象

那么,这意味着我们通过命令行隐式使用控制台类?

然后,我开始寻找有关Console类的更多详细信息,并找到了Input from console class in javaConsole链接。所以,总结了一些观点

  
      
  1. 控制台类仅在IDE之外可用,使用System.console().readLine();
  2.   
  3. Console从控制台读取密码或密码,并使用readPassword()
  4. 禁用回显   

虽然,我们有Scanner类和BufferedReader类来读取控制台的输入,并且是在Java 5之前添加的。因此,仅在Console中添加了Java 6类安全原因?或者是否有其他优势可以使用本课程。

有人可以分享有关Console课程的更多详情吗?

3 个答案:

答案 0 :(得分:4)

Console类直接从进程控制台(通常是Unix系统中的/ dev / console)读取。控制台与System.in的不同之处在于,在启动命令时无法重定向。它还用于读取密码,因为从控制台读取,您可以控制是否回显键入的字符。

为了澄清这个类的更多内容,请阅读Unix系统中的控制台和标准输入(这通常是Unix的事情,而且我不确定它是如何映射到Windows系统的。)

最后,Scanner可以读取任何输入:文件,流或控制台本身,因此它与控制台不同。

答案 1 :(得分:2)

Console类尝试实现与平台无关的方式来处理控制台输入。所有操作系统都有一个控制台,但它们在实现方面是不同的。因此,Console类为您提供了一个独立的运行时类Java平台,用于访问密码输入等内容。

答案 2 :(得分:1)

  

虚拟机是否具有控制台取决于   底层平台以及虚拟的方式   机器被调用。如果虚拟机是从一个启动的   交互式命令行,无需重定向标准输入和   输出流然后它的控制台将存在并且通常是   连接到键盘和显示虚拟机的显示器   已启动,推出。如果虚拟机自动启动,则为   例如,后台作业调度程序,它通常没有   控制台。

How To Get Input From Console Class In Java?