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

Метод ReadAtLeast

Stream.ReadAtLeast из .NET 7 возвращает число прочитанных байт. Если данных меньше минимума и throwOnEndOfStream равен true, бросается EndOfStreamException. Ровно столько байт без возврата числа даёт ReadExactly. Есть ReadAtLeastAsync.

Синтаксис

int read = stream.ReadAtLeast( buffer, minimumBytes, throwOnEndOfStream: true);

Пример

Давайте прочитаем хотя бы три байта. Буфер ровно на три, поэтому метод вернёт 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); ms.Position = 0; byte[] buf = new byte[3]; int res = ms.ReadAtLeast(buf, 3); Console.WriteLine(res); } }

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

3

Пример

Давайте запросим минимум 3, но дадим буфер на пять байт. MemoryStream за один Read заполняет весь буфер, поэтому счётчик больше минимума:

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[5]; int res = ms.ReadAtLeast(buf, 3); Console.WriteLine(res); } }

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

5

Пример

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

using System; using System.IO; class Program { static void Main() { using var ms = new MemoryStream(); ms.Write([1, 2, 3], 0, 3); ms.Position = 0; byte[] buf = new byte[5]; try { ms.ReadAtLeast(buf, 5, true); } catch (EndOfStreamException) { Console.WriteLine("fail"); } } }

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

"fail"

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

  • метод ReadExactly,
    который требует ровно столько байт
  • метод Read,
    который может вернуть меньше count
  • свойство Length,
    которое показывает размер потока
  • Stream,
    класс, где объявлен ReadAtLeast
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить