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

ReadBytes

ReadBytes у BinaryReader читает сырые байты без префикса длины - в отличие от ReadString. После Write(byte[]) массив лежит в потоке как есть. У конца потока может вернуться меньше байт, чем просили.

Синтаксис

byte[] chunk = reader.ReadBytes(count);

Пример

Давайте прочитаем три байта после записи массива:

using System; using System.IO; using System.Text; class Program { static void Main() { MemoryStream ms = new MemoryStream(); BinaryWriter writer = new BinaryWriter( ms, Encoding.UTF8, leaveOpen: true); writer.Write(new byte[] { 1, 2, 3, 4, 5 }); ms.Position = 0; BinaryReader reader = new BinaryReader( ms, Encoding.UTF8, leaveOpen: true); byte[] res = reader.ReadBytes(3); Console.WriteLine(res[0]); Console.WriteLine(res[1]); Console.WriteLine(res[2]); reader.Dispose(); writer.Dispose(); ms.Dispose(); } }

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

1 2 3

Пример

Давайте проверить длину массива после чтения:

using System; using System.IO; using System.Text; class Program { static void Main() { MemoryStream ms = new MemoryStream(); BinaryWriter writer = new BinaryWriter( ms, Encoding.UTF8, leaveOpen: true); writer.Write(new byte[] { 1, 2, 3, 4, 5 }); ms.Position = 0; BinaryReader reader = new BinaryReader( ms, Encoding.UTF8, leaveOpen: true); byte[] res = reader.ReadBytes(3); Console.WriteLine(res.Length); reader.Dispose(); writer.Dispose(); ms.Dispose(); } }

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

3

Пример

Давайте запросить больше, чем осталось в потоке:

using System; using System.IO; using System.Text; class Program { static void Main() { MemoryStream ms = new MemoryStream(); BinaryWriter writer = new BinaryWriter( ms, Encoding.UTF8, leaveOpen: true); writer.Write(new byte[] { 1, 2 }); ms.Position = 0; BinaryReader reader = new BinaryReader( ms, Encoding.UTF8, leaveOpen: true); byte[] res = reader.ReadBytes(5); Console.WriteLine(res.Length); reader.Dispose(); writer.Dispose(); ms.Dispose(); } }

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

2

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

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