是否有人知道如何找到你在文件的末尾? 我正在使用BinaryReader并尝试过PeekChar - 但它会引发异常。还有其他建议吗?
感谢。
答案 0 :(得分:11)
从Stream
开始,如果您Read(buffer, offset, count)
,您将获得非阳性结果,如果您Peek()
,您将获得否定结果。
使用BinaryReader
时,the documentation表示PeekChar()
应返回否定值:
返回值
类型:System.Int32 下一个可用字符,如果没有更多字符可用,则为-1,或者流不支持搜索。
你确定这不是损坏的流吗?即剩余的数据不能从给定的编码中形成完整的char
?
答案 1 :(得分:1)
如果您的流支持搜索(使用BaseStream.CanSeek属性检查),请检查BaseStream的Position属性,如下所示:
if (myBinaryReader.BaseStream.CanSeek){
bool atEnd = (myBinaryReader.BaseStream.Position == myBinaryReader.BaseStream.Length - 1)
}
答案 2 :(得分:1)
检查阅读器的位置是否小于其长度就可以了?
While BinReader.Position < BinReader.Length
{
... BinReader.Read() ...
}
答案 3 :(得分:0)
我会添加我的建议:如果您不需要&#34;编码&#34; BinaryReader
的一部分(因此您不能使用各种ReadChar
/ ReadChars
/ ReadString
),那么您可以使用永不过时的编码器throw,这总是每字节一个字节。 Encoding.GetEncoding("iso-8859-1")
非常适合这一点。 iso-8859-1
编码是每字符一个字节的编码,它以1:1的方式映射Unicode的前256个字符(例如,byte
254是char
254 <) / p>
答案 4 :(得分:-1)
While BinReader.PeekChar() > 0
{
...
}