StreamReader.ReadToEnd第二次以不同的方式阅读

时间:2012-03-18 09:52:46

标签: c# stream streamreader

我需要从同一个流中读取两次。问题是我第二次得到一个不同的字符串。 这是缩短的代码:

using(StreamReader sr = new StreamReader(filePath))
{
    string string1  = sr.ReadToEnd();
    sr.BaseStream.Position = 0;
    sr.DiscardBufferedData();   
    string string2 = sr.ReadToEnd();
    bool sameSame = string1 == string2; // false!
}

字符串看起来相同,但使用十六进制编辑器检查我可以看到值不同。造成这种情况的原因是什么?如何绕过它?

更新

字符串1

string1

字符串2

string2

由于某种原因,string1有一个' - '。

1 个答案:

答案 0 :(得分:1)

这是字节顺序标记的问题,一个肮脏的解决方法是跳过前三个字节:

sr.BaseStream.Position = 3;

但正确的方法是创建一个新的StreamReader。