【问题标题】:Why Use java.io.Console?为什么使用 java.io.Console?
【发布时间】:2010-11-01 15:35:54
【问题描述】:

这里只是一个快速的。

使用java.io.Console 与使用BufferedReader 包装InputStreamReaderSystem.in 相比有什么好处?

我为什么要使用它?

感谢您的建议!

【问题讨论】:

    标签: java input console


    【解决方案1】:

    java.io.Console 用于在运行时获取和读取用户的输入,并在处理完用户的输入后显示输出。

    更多详细信息请访问https://www.examsmyantra.com/article/58/java/java-io---console-input-and-output

    【讨论】:

      【解决方案2】:

      java.io.Console is finally here!

      最受欢迎的功能之一 最近对 J2SE 的请求有 被要求改进控制台 支持并提供一种进入方式 禁用回显的密码。 开发者知道这个功能 4050435 因为它一直在前 25 名中潜伏 RFE 列出了一段时间。

      【解决方案3】:

      我很确定您不会使用 Console 获得另一个技巧——我创建了自己的输入和输出流,并用它们替换了 System.in/out。我的流实现附加到日志文件并回显到屏幕。

      当我打开穷人的“调试信息”时,我什至可以让它告诉我 sysout 来自哪个程序/行(虽然它很慢。它创建了一个异常并检查了适当的堆栈条目,所以它是默认关闭)

      【讨论】:

        【解决方案4】:

        您可以使用java.io.Console 向用户显示交互式命令行。您可以自己使用System.in 完成所有这些操作,但您必须实现诸如注意输入何时完成或readPassword 等操作。

        【讨论】:

        • 删除字符?这不是由系统控制台自己执行的吗?
        • 如果您在 System.in 周围使用 BufferedReader,那么您不需要“注意”字符的擦除或任何此类内容。不过,readPassword 是使用 Console 的一个很好的理由。
        • 谢谢大家,你是对的。我删除了关于擦除字符的部分。
        【解决方案5】:

        java.io.Console 仅在您从命令行启动 Java 程序而不重定向 STDIN/STDOUT 时才有效。

        我看到 Console 优于 System.in 的主要优势是您拥有 readPassword() 方法,该方法不会回显用户键入的字符(我找不到使用 System.in 执行此操作的方法)。

        您还有 readLine() ,它将显示提示并读取一行。您不必创建自己的 LineNumberReader。

        但是,如果您希望您的 Java 程序在从文件或管道重定向时能够从 STDIN 读取,您仍然必须使用 System.in。

        【讨论】:

          【解决方案6】:

          因为它是已经为您编写的代码......无需重新发明轮子。很有可能,你不会比现在更好。

          【讨论】:

          • 这是真的!所以你是说我不应该为每个项目开发自己的链表泛型类型?! :P
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-11
          • 2019-11-02
          • 1970-01-01
          • 1970-01-01
          • 2011-04-13
          • 2011-08-30
          • 2015-08-10
          相关资源
          最近更新 更多