Метод Read
Stream.Read(buffer, offset, count)
возвращает, сколько байт реально прочитано;
это может быть меньше count.
0 означает конец потока. Запись
данных -
Write.
Перед чтением часто вызывают
Seek
или сбрасывают Position.
Есть ReadAsync.
Синтаксис
int read = stream.Read(buffer, offset, count);
Пример
Давайте прочитаем три байта из
MemoryStream:
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[10];
int res = ms.Read(buf, 0, 3);
Console.WriteLine(res);
}
}
Результат выполнения кода:
3
Пример
Давайте дочитаем остаток - число меньше
запрошенного 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[10];
ms.Read(buf, 0, 3);
int res = ms.Read(buf, 0, 10);
Console.WriteLine(res);
}
}
Результат выполнения кода:
2
Пример
Давайте прочитаем после конца - вернётся
0:
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 = 5;
byte[] buf = new byte[4];
int res = ms.Read(buf, 0, 4);
Console.WriteLine(res);
}
}
Результат выполнения кода:
0
Смотрите также
-
метод
Write,
который записывает байты -
метод
ReadExactly,
который читает ровно столько байт -
метод
ReadAtLeast,
который читает хотя бы минимум -
Stream,
класс, где объявленRead