我正在阅读有关Console
课程的内容,在第一行中,它是写的
Java 6新手,当我们从命令行运行
Java SE 6
时,我们通常使用控制台类对象
那么,这意味着我们通过命令行隐式使用控制台类?
然后,我开始寻找有关Console类的更多详细信息,并找到了Input from console class in java和Console链接。所以,总结了一些观点
- 控制台类仅在IDE之外可用,使用
System.console().readLine();
- 禁用回显 醇>
Console
类从控制台读取密码或密码,并使用readPassword()
虽然,我们有Scanner类和BufferedReader类来读取控制台的输入,并且是在Java 5
之前添加的。因此,仅在Console
中添加了Java 6
类安全原因?或者是否有其他优势可以使用本课程。
有人可以分享有关Console
课程的更多详情吗?
答案 0 :(得分:4)
Console类直接从进程控制台(通常是Unix系统中的/ dev / console)读取。控制台与System.in的不同之处在于,在启动命令时无法重定向。它还用于读取密码,因为从控制台读取,您可以控制是否回显键入的字符。
为了澄清这个类的更多内容,请阅读Unix系统中的控制台和标准输入(这通常是Unix的事情,而且我不确定它是如何映射到Windows系统的。)
最后,Scanner可以读取任何输入:文件,流或控制台本身,因此它与控制台不同。
答案 1 :(得分:2)
Console类尝试实现与平台无关的方式来处理控制台输入。所有操作系统都有一个控制台,但它们在实现方面是不同的。因此,Console类为您提供了一个独立的运行时类Java平台,用于访问密码输入等内容。
答案 2 :(得分:1)
虚拟机是否具有控制台取决于 底层平台以及虚拟的方式 机器被调用。如果虚拟机是从一个启动的 交互式命令行,无需重定向标准输入和 输出流然后它的控制台将存在并且通常是 连接到键盘和显示虚拟机的显示器 已启动,推出。如果虚拟机自动启动,则为 例如,后台作业调度程序,它通常没有 控制台。