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

Класс BufferedStream

BufferedStream оборачивает другой Stream, например MemoryStream или FileStream. Данные уходят вниз после Flush или когда буфер заполнен. Своего ToArray нет. Dispose закрывает и внутренний поток - читайте до освобождения. Есть асинхронные перегрузки записи и чтения.

Синтаксис

using System.IO; Stream inner = new MemoryStream(); using BufferedStream buffered = new BufferedStream(inner);

Пример

Давайте проверим длину внутреннего потока до и после Flush:

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

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

True "abcde"

Пример

Давайте прочитаем данные из внутреннего потока до Dispose:

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

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

"12345"

Пример

Давайте покажем ObjectDisposedException после закрытия:

using System; using System.IO; class Program { static void Main() { MemoryStream inner = new MemoryStream(); BufferedStream buffered = new BufferedStream(inner); buffered.Dispose(); try { buffered.Read(new byte[1], 0, 1); } catch (ObjectDisposedException) { Console.WriteLine("fail"); } } }

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

"fail"

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

  • Stream,
    базовый поток и Flush
  • MemoryStream,
    нижний поток в примере
  • FileStream,
    файл под буфером
  • Write,
    запись в обёртку
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить