StreamReader.ReadToEnd чтение по-другому во второй раз - PullRequest
0 голосов
/ 18 марта 2012

Мне нужно читать из одного потока дважды. Проблема в том, что я получаю другую строку во второй раз. Вот сокращенный код:

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!
}

Строки выглядят одинаково, но с помощью шестнадцатеричного редактора я вижу, что значения разные. Что вызывает это и как мне обойти это?

UPDATE

string1

string1

строка2

string2

По какой-то причине string1 имеет '-'.

1 Ответ

1 голос
/ 18 марта 2012

Это проблема с меткой порядка байтов, грязный обходной путь - пропустить первые три байта:

sr.BaseStream.Position = 3;

Но правильный способ - создать новый StreamReader.

...