我正在改进使用BinaryReader
的流阅读器类。它由一个使用.PeekChar()
的while循环组成,以检查是否存在更多数据以继续处理。
第一个操作是.ReadInt32()
,它读取4个字节。如果PeekChar
仅“看到”一个字节(或一位)怎么办?这似乎不是检查EOF的可靠方法。
BinaryReader
是使用其默认参数构造的,据我所知,该参数使用UTF8作为默认编码。我假设.PeekChar()
检查8位,但我确实不确定。.PeekChar()
查找多少位? (还有哪些其他方法可以检查EOF?)
最佳答案
这里BinaryReader.PeekChar
我读:
这清楚地表明,读取的内存量取决于应用于该流的编码。
编辑
实际上根据MSDN的定义是:
实际上,这是一个字节还是更多,取决于编码。
希望这可以帮助。