【问题标题】:FilterReader Class's mark methodFilterReader 类的标记方法
【发布时间】:2020-10-14 15:49:28
【问题描述】:
public void mark(int readAheadLimit)
          throws IOException

Java.io 包中的FilterReader 类有一个mark 方法来标记下一个元素,那个参数在那个方法中有什么用。 JavaDocs - 限制在保留标记的同时可以读取的字符数。读取这么多字符后,尝试重置流可能会失败

这是什么意思。感谢有关重置失败以及该参数的作用的示例和解释!

【问题讨论】:

标签: java stream


【解决方案1】:

InputStream.mark 中有更好的解释。支持mark() 的阅读器应该反映这种行为,例如通过将其委托给底层InputStream

标记此输入流中的当前位置。对 reset 方法的后续调用会将此流重新定位到最后标记的位置,以便后续读取重新读取相同的字节。

readlimit 参数告诉这个输入流允许在标记位置失效之前读取那么多字节。

mark 的一般约定是,如果方法 markSupported 返回 true,则流以某种方式记住调用 mark 之后读取的所有字节,并准备好在调用方法 reset 时再次提供这些相同的字节。但是,如果在调用 reset 之前从流中读取了超过 readlimit 个字节,则流根本不需要记住任何数据。

标记关闭的流不应对流产生任何影响。

InputStream的mark方法什么都不做。

因此,该参数告诉mark() 方法,用于记忆元素的缓冲区需要多大。这允许它在需要时分配适当大小的缓冲区。

【讨论】:

  • 我还是不明白那个方法的参数的使用方法
猜你喜欢
  • 2012-05-09
  • 2014-01-20
  • 1970-01-01
  • 2016-07-06
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
相关资源
最近更新 更多