11

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

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

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

然后,我开始寻找有关控制台类的更多详细信息,并在 java和控制台链接中找到了控制台类的输入。所以,总结了几点

  1. 控制台类只能在 IDE 外部使用System.console().readLine();
  2. Console从控制台读取密码或密码短语,使用禁用回显readPassword()

虽然,我们有Scanner类和BufferedReader类来从控制台读取输入,并且早于Java 5. 那么,仅由于安全原因Console类被添加到Java 6?或者是否有任何其他优势来使用这个类。

任何人都可以分享有关Console课程的更多详细信息吗?

4

3 回答 3

4

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

为了更清楚地了解这门课,请阅读 Unix 系统中的控制台和标准输入(这通常是 Unix 的东西,我不确定它如何映射到 Windows 系统)。

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

于 2012-12-26T11:17:45.570 回答
2

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

于 2012-12-26T11:19:34.917 回答
1

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

如何从 Java 中的控制台类获取输入?

于 2012-12-26T11:16:05.940 回答