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

Класс Stream

System.IO.Stream - абстрактный класс: данные идут байтами, позиция сдвигается вперёд при чтении и записи. В примерах используют MemoryStream в памяти; FileStream - тот же Stream поверх файла, его открывают через File.Open. Чтение - Read, запись - Write. У многих методов есть *Async.

Синтаксис

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

Пример

Давайте запишем пять байт и прочитаем первые три:

using System; using System.IO; class Program { static void Main() { using var ms = new MemoryStream(); ms.Write([1, 2, 3, 4, 5], 0, 5); ms.Position = 0; byte[] buf = new byte[3]; int res = ms.Read(buf, 0, 3); Console.WriteLine(res); } }

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

3

Пример

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

using System; using System.IO; class Program { static void Main() { using var ms = new MemoryStream(); ms.Write([1, 2, 3, 4, 5], 0, 5); long res = ms.Length; Console.WriteLine(res); } }

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

5

Пример

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

using System; using System.IO; class Program { static void Main() { using var src = new MemoryStream(); src.Write([1, 2, 3, 4, 5], 0, 5); src.Position = 0; using var dst = new MemoryStream(); src.CopyTo(dst); long res = dst.Length; Console.WriteLine(res); } }

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

5

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

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