BinaryReader的FillBuffer方法有什么作用?

时间:2010-10-17 20:04:03

标签: c# buffer binaryreader

根据documentation

  

使用从流中读取的指定字节数填充内部缓冲区。

这是什么意思(什么是内部缓冲区?)?

3 个答案:

答案 0 :(得分:0)

BinaryReader有一个内部缓冲区,因此它不需要在底层流上执行尽可能多的小读取,尤其是在读取可能需要一些预测的字符数据时。您不需要手动调用它。

答案 1 :(得分:0)

请注意,该方法被声明为protected。

因此,如果您想创建一个继承自BinaryReader的类,您很少需要这样做。

答案 2 :(得分:0)

看起来这里的主要目的是让您有一个方便的方法来确保您在本地拥有一个数据块;例如,当读取“double”时,您(通常)需要8个字节。这个方法结束了:

  • 检查内部缓冲区是否已经足够
  • 根据需要循环“阅读”
  • 检查EOF(和错误)
  • 守卫超越
  • 处理缓冲区管理,例如定期向后复制数据块,或处理循环缓冲区的各种索引

但是,你似乎不太需要在外部调用它,除非你正在读一个小的'byte []'

内部缓冲区;简单地说,当你反序列化时:

  • 希望尽量减少对“阅读”的调用
  • 经常需要超过1个字节(没有缓冲区时很棘手)
  • 经常需要对小'byte []'进行操作(例如,通过BitConverter)

所以只是工作