Метод Write(string) класса StreamWriter обрезает строку. - C#

Узнай цену своей работы

Формулировка задачи:

Не могу разобраться, почему не работает вот такой код:
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();
        }
Задача такая: Из строки (поле text) получить поток и передать его в метод Write(). Строка может иметь размер ( до 1 МБ). После выполнения метода sw.Write(this.text) в memoryStream находится массив байт, размер которого меньше this.text (Получается, что часть строки срезается). Срезается с конца. Помогите, пожалуйста, понять в чем проблема.

Решение задачи: «Метод 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);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы