Метод Write(string) класса StreamWriter обрезает строку. - C#
Формулировка задачи:
Не могу разобраться, почему не работает вот такой код:
Задача такая: Из строки (поле text) получить поток и передать его в метод Write(). Строка может иметь размер ( до 1 МБ). После выполнения метода sw.Write(this.text) в memoryStream находится массив байт, размер которого меньше this.text (Получается, что часть строки срезается). Срезается с конца.
Помогите, пожалуйста, понять в чем проблема.
using (Stream memoryStream = new MemoryStream(System.Text.Encoding.Unicode.GetByteCount(this.text))) { StreamWriter sw = new StreamWriter(memoryStream, System.Text.Encoding.Unicode); sw.Write(this.text); memoryStream.Flush(); memoryStream.Position = 0; this.Write(memoryStream); sw.Close(); }
Решение задачи: «Метод Write(string) класса StreamWriter обрезает строку.»
textual
Листинг программы
using (Stream memoryStream = new MemoryStream(System.Text.Encoding.Unicode.GetByteCount(this.text))) { using(StreamWriter sw = new StreamWriter(memoryStream, System.Text.Encoding.Unicode)) { sw.AutoFlush = true;// чтобы автоматом сбрасывало буффер в поток, при каждом вызове Write sw.Write(this.text); sw.Flush(); // или вручную сбрасывайте memoryStream.Flush(); memoryStream.Position = 0; this.Write(memoryStream); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д