我正在改进使用BinaryReader的流阅读器类。它由一个使用.PeekChar()的while循环组成,以检查是否存在更多数据以继续处理。

第一个操作是.ReadInt32(),它读取4个字节。如果PeekChar仅“看到”一个字节(或一位)怎么办?这似乎不是检查EOF的可靠方法。

BinaryReader 是使用其默认参数构造的,据我所知,该参数使用UTF8作为默认编码。我假设.PeekChar()检查8位,但我确实不确定。
.PeekChar()查找多少位? (还有哪些其他方法可以检查EOF?)

最佳答案

这里BinaryReader.PeekChar

我读:



这清楚地表明,读取的内存量取决于应用于该流的编码。

编辑

实际上根据MSDN的定义是:



实际上,这是一个字节还是更多,取决于编码。

希望这可以帮助。

10-08 17:02