-1

当我使用 buffer 而不是 console() 从我的代码中检索输出时,有什么区别?

4

2 回答 2

1

使用的ConsoleSystem.console()似乎针对基于字符的交互式I/O,由实际控制台提供,例如 Windows 中的cmd.exe窗口或类 Unix 系统中的终端。因此,系统控制台可能并不总是可用,具体取决于底层操作系统和 JVM 的启动方式。

另一方面,Scanner适用于任何输入流,包括文件和标准输入。它更灵活,但它不提供某些特定于控制台的功能Console,例如读取文本(通常是密码)而不将其回显到控制台的能力。

于 2012-05-20T07:00:30.977 回答
0

该类Console可以很容易地接受来自命令行的输入,包括回显和非回显。未回显意味着您在编写文本(例如 *、?等)时会在控制台中看到一些特殊字符,例如在 facebook 中输入密码时。:) 它的format()方法还可以轻松地将格式化的输出写入命令行(例如制作 *s 金字塔或格式化的日期和货币格式等)。它还有助于为单元测试编写测试引擎。或者您可以使用它为您提供一个简单的 CLI(命令行界面)而不是 GUI(图形用户界面),以防您想创建一个真正简单且小型的应用程序。是的,它也依赖于系统,这意味着您不能总是依赖您的系统为您提供控制台实例。

现在关于缓冲,它实际上是一种在 I/O(即输入和输出)中使用的技术,当您与流交互时(无论是字符流还是字节流,无论是来自控制台、套接字还是文件)。read()它主要用于通过避免多次调用和write()方法来加速 I/O 并节省系统资源。建议您在几乎所有类型的 I/O 交互中使用它。

于 2012-05-20T07:25:17.700 回答