StreamReader становится владельцем потока, который он предоставляет, и закрывает его при удалении (большинство типов, для которых в конструкторе используется другой тип IDisposable
, будут делать это).
ЭтоКонструктор StreamReader принимает логическое значение, указывающее, следует ли оставить поток открытым после того, как StreamReader расположен в качестве его последнего параметра:
using (var reader = new StreamReader(memStream, Encoding.UTF8, true, 1024, true))
{
...
}
(Эти другие параметры являются значениями по умолчанию, которые StreamReader(Stream)
использует, начиная с источник ссылки .)
Как правильно заметил в комментариях Марк Гравелл, мы говорили, что используем кодировку UTF-8, но похоже, что ваш поток двоичный и определенно не текст UTF-8!Так что ожидайте, что это не удастся на практике.Может быть более полезно взглянуть на вывод BitConverter.ToString(memStream.GetBuffer(), 0, memStream.Length)
(или проще, но менее эффективно BitConverter.ToString(memStream.ToArray())
).