非常奇怪的行为
如果我在文件顶部创建一个缓冲流,然后寻找一个偏移量,我会得到一个字节块
如果我将调试器移回搜索并重新搜索,我会得到额外的两个字符
我已经三次检查了这个
这个类可能有错误吗?
如果我重新回到位置,我希望得到相同的 - 文件没有改变 - 我在只读模式下打开它,我根据Origin寻找
复制:
bufferedStream.Seek(100,0, 100)
bufferedStream.Reade(buffer, 0, 100)
与你从这里得到的不同
bufferedStream.Seek(100,0, 100)
bufferedStream.Reade(buffer, 0, 100)
答案 0 :(得分:0)
首先,如果没有检查返回值,很难知道它们是否相同Read - 它们是否可能只选择不同的块? (完全有效;确保循环使用Read是您的工作,直到您有足够的数据或EOF)。
但是,我想知道这里是否涉及到BOM - 特别是如果您正坐在文本阅读器之上。简单地说,读者期望在开始处的BOM;所以它可能会在第一时间隐藏它。但是如果你在使用相同的阅读器/解码器时回放流,它将期待一个BOM,所以会尝试将其作为字符数据报告(或者根据配置抛出错误)