据我所知,从 Java 文件中读取基于字符的数据的两种最常用方法是使用 Scanner
或 BufferedReader
。我也知道 BufferedReader
通过使用缓冲区来有效地读取文件以避免物理磁盘操作。
我的问题是:
Scanner
BufferedReader
好?- 为什么你会选择
Scanner
而不是BufferedReader
或者反之亦然?
原文由 Mads Mobæk 发布,翻译遵循 CC BY-SA 4.0 许可协议
据我所知,从 Java 文件中读取基于字符的数据的两种最常用方法是使用 Scanner
或 BufferedReader
。我也知道 BufferedReader
通过使用缓冲区来有效地读取文件以避免物理磁盘操作。
我的问题是:
Scanner
BufferedReader
好?Scanner
而不是 BufferedReader
或者反之亦然?原文由 Mads Mobæk 发布,翻译遵循 CC BY-SA 4.0 许可协议
在当前最新的 JDK 18 版本/构建 (b37) 中, Scanner
具有较小的缓冲区( 1024 个字符),而不是 BufferedReader
( 8192 个字符),但它绰绰有余。
至于选择,如果要 解析 文件,请使用 Scanner
BufferedReader
,如果要逐行 读取 文件,请使用—。另请参阅其前面链接的 API 文档的介绍性文本。
Scanner
类中的所有这些 nextXxx()
方法。原文由 BalusC 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
Scanner
用于从流的内容中解析令牌,而BufferedReader
只是读取流并且不进行任何特殊解析。事实上,您可以将
BufferedReader
传递给scanner
作为要解析的字符源。