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,
буфер для проверки