Я пытаюсь разбить поток байтов на куски увеличивающегося размера.
Исходный поток содержит неизвестное количество байтов и дорого читается. На выходе перечислителя должны быть массивы байтов увеличивающегося размера, начиная с 8 КБ до 1 МБ.
Это очень просто сделать, просто прочитав весь поток, сохранив его в массиве и извлекая соответствующие фрагменты. Однако, поскольку поток может быть очень большим, чтение его сразу невозможно. Кроме того, хотя производительность не является главной проблемой, важно поддерживать очень низкую нагрузку на систему.
При реализации этого я заметил, что относительно сложно сделать код коротким и удобным для сопровождения. Также следует помнить о нескольких проблемах, связанных с потоком (например, Stream.Read может не заполнить буфер, даже если он был выполнен успешно).
Я не нашел ни одного из существующих классов, которые помогли бы в моем случае, и не смог найти что-то близкое в сети. Как бы вы реализовали такой класс?