【发布时间】:2019-11-09 05:37:23
【问题描述】:
我想知道,BufferedReader 的mark() 和reset() 的方法到底有什么用处?
我了解他们在做什么,但在一些文本中来回切换我从未使用过它们 - 通常我通过读取一系列字符或数组中的整行或 StringBuilder 来解决这个问题em> 来回穿梭。
我相信这些方法出现在 BufferedReader 和支持它的其他 Reader 实现中一定有一些原因,但我无法做出假设。
与读取我们自己的数组中的数据并在其中导航相比,使用mark() 和reset 是否提供了一些好处?
我搜索了我正在处理的一个大型项目的代码库(主要是 Java 使用 Spring Boot 的后端),其中有很多依赖于类路径和唯一使用标记和重置方法的东西(仅在极少数库中)是在文本文件的开头跳过可选的 BOM 字符。即使对于这个简单的用例,我也觉得这样做有点做作。
此外,我正在寻找其他教程和 Stackoverflow(例如 What are mark and reset in BufferedReader?),但找不到任何解释为什么要使用 mark & reset 实际解决这些问题。所有代码示例仅解释了方法在“hello world”示例中所做的事情(从流中的一个位置跳回到前一个位置,没有特殊原因)。我找不到任何解释为什么有人应该在其他听起来更优雅且性能并不差的方式中实际使用它。
【问题讨论】:
-
“常见用例”很少。 22 年来我从未认真使用过它们(生产代码)。
标签: java io bufferedreader java-io