Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
790 of 1492 menu
◀ ▶

Класс MemoryStream

MemoryStream наследует Stream. Пустой конструктор создаёт растущий буфер. Конструктор с byte[] фиксирует размер: запись за предел даёт NotSupportedException. Байты забирают через ToArray. У методов есть асинхронные перегрузки.

Синтаксис

using System.IO; using MemoryStream stream = new MemoryStream(); stream.Write(buffer, offset, count);

Пример

Давайте запишем "abcde" в растущий поток:

using System; using System.IO; using System.Text; class Program { static void Main() { using (MemoryStream stream = new MemoryStream()) { byte[] data = Encoding.UTF8.GetBytes("abcde"); stream.Write(data, 0, data.Length); string res = Encoding.UTF8.GetString(stream.ToArray()); Console.WriteLine(res); } } }

Результат выполнения кода:

"abcde"

Пример

Давайте запишем в готовый массив из пяти байт:

using System; using System.IO; class Program { static void Main() { byte[] store = new byte[5]; using (MemoryStream stream = new MemoryStream(store)) { stream.Write(new byte[] { 97, 98, 99, 100, 101 }, 0, 5); bool res = stream.Length == 5; Console.WriteLine(res); } } }

Результат выполнения кода:

True

Пример

Давайте попробуем записать больше, чем помещается в фиксированный буфер:

using System; using System.IO; class Program { static void Main() { using (MemoryStream stream = new MemoryStream(new byte[3])) { try { stream.Write(new byte[] { 1, 2, 3, 4 }, 0, 4); } catch (NotSupportedException) { Console.WriteLine("fail"); } } } }

Результат выполнения кода:

"fail"

Смотрите также

  • ToArray,
    скопировать байты
  • Capacity,
    размер буфера
  • BufferedStream,
    буфер поверх потока
  • Read,
    чтение из потока
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить