我正在寻找一种方法来检查我是否已到达二进制阅读器的文件末尾,一个建议是使用 PeekChar
while (inFile.PeekChar() > 0)
{
...
}
但是,看起来我遇到了问题
未处理的异常:System.ArgumentException:输出字符缓冲区太小 ll 包含解码后的字符,编码 'Unicode (UTF-8)' fallback 'Syste m.Text.DecoderReplacementFallback'。 参数名称:字符 在 System.Text.Encoding.ThrowCharsOverflow() 在 System.Text.Encoding.ThrowCharsOverflow(DecoderNLS 解码器,布尔无 g解码) 在 System.Text.UTF8Encoding.GetChars(Byte* 字节,Int32 byteCount,Char* char s, Int32 charCount, DecoderNLS baseDecoder) 在 System.Text.DecoderNLS.GetChars(Byte* bytes, Int32 byteCount, Char* chars, Int32 charCount,布尔刷新) 在 System.Text.DecoderNLS.GetChars(Byte[] bytes, Int32 byteIndex, Int32 byteC 数量,Char[] 字符,Int32 charIndex,布尔刷新) 在 System.Text.DecoderNLS.GetChars(Byte[] bytes, Int32 byteIndex, Int32 byteC 数量,Char[] 字符,Int32 字符索引) 在 System.IO.BinaryReader.InternalReadOneChar() 在 System.IO.BinaryReader.PeekChar()
所以也许 PeekChar 不是最好的方法,我认为它甚至不应该那样使用,因为我正在检查我的读者的当前位置,而不是下一个字符应该是什么。