【发布时间】:2010-11-01 15:35:54
【问题描述】:
这里只是一个快速的。
使用java.io.Console 与使用BufferedReader 包装InputStreamReader 为System.in 相比有什么好处?
我为什么要使用它?
感谢您的建议!
【问题讨论】:
这里只是一个快速的。
使用java.io.Console 与使用BufferedReader 包装InputStreamReader 为System.in 相比有什么好处?
我为什么要使用它?
感谢您的建议!
【问题讨论】:
java.io.Console 用于在运行时获取和读取用户的输入,并在处理完用户的输入后显示输出。
更多详细信息请访问https://www.examsmyantra.com/article/58/java/java-io---console-input-and-output
【讨论】:
见java.io.Console is finally here!
最受欢迎的功能之一 最近对 J2SE 的请求有 被要求改进控制台 支持并提供一种进入方式 禁用回显的密码。 开发者知道这个功能 4050435 因为它一直在前 25 名中潜伏 RFE 列出了一段时间。
我很确定您不会使用 Console 获得另一个技巧——我创建了自己的输入和输出流,并用它们替换了 System.in/out。我的流实现附加到日志文件并回显到屏幕。
当我打开穷人的“调试信息”时,我什至可以让它告诉我 sysout 来自哪个程序/行(虽然它很慢。它创建了一个异常并检查了适当的堆栈条目,所以它是默认关闭)
【讨论】:
您可以使用java.io.Console 向用户显示交互式命令行。您可以自己使用System.in 完成所有这些操作,但您必须实现诸如注意输入何时完成或readPassword 等操作。
【讨论】:
readPassword 是使用 Console 的一个很好的理由。
java.io.Console 仅在您从命令行启动 Java 程序而不重定向 STDIN/STDOUT 时才有效。
我看到 Console 优于 System.in 的主要优势是您拥有 readPassword() 方法,该方法不会回显用户键入的字符(我找不到使用 System.in 执行此操作的方法)。
您还有 readLine() ,它将显示提示并读取一行。您不必创建自己的 LineNumberReader。
但是,如果您希望您的 Java 程序在从文件或管道重定向时能够从 STDIN 读取,您仍然必须使用 System.in。
【讨论】:
因为它是已经为您编写的代码......无需重新发明轮子。很有可能,你不会比现在更好。
【讨论】: