扫描仪与 BufferedReader

新手上路,请多包涵

据我所知,从 Java 文件中读取基于字符的数据的两种最常用方法是使用 ScannerBufferedReader 。我也知道 BufferedReader 通过使用缓冲区来有效地读取文件以避免物理磁盘操作。

我的问题是:

  • Scanner BufferedReader 好?
  • 为什么你会选择 Scanner 而不是 BufferedReader 或者反之亦然?

原文由 Mads Mobæk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 589
2 个回答

Scanner 用于从流的内容中解析令牌,而 BufferedReader 只是读取流并且不进行任何特殊解析。

事实上,您可以将 BufferedReader 传递给 scanner 作为要解析的字符源。

原文由 Chandra Sekar 发布,翻译遵循 CC BY-SA 3.0 许可协议

在当前最新的 JDK 18 版本/构建 (b37) 中, Scanner 具有较小的缓冲区( 1024 个字符),而不是 BufferedReader8192 个字符),但它绰绰有余。

至于选择,如果要 解析 文件,请使用 Scanner BufferedReader ,如果要逐行 读取 文件,请使用—。另请参阅其前面链接的 API 文档的介绍性文本。

  • 解析 = 将给定输入解释为标记(部分)。它能够直接将特定部分作为 int、字符串、小数等返回给您。另请参阅 Scanner 类中的所有这些 nextXxx() 方法。
  • 阅读 =哑流。它不断地返回给你所有的字符,如果你想匹配或组合一些有用的东西,你又必须手动检查这些字符。但是,如果您无论如何都不需要这样做,那么阅读就足够了。

原文由 BalusC 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题