Метод 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);
}
}