Необходимость писать собственные стримы бывает не так уж и часто. Однако, такие ситуации бывают.
Например, допустим, что вы разрабатываете компьютерную игру с множеством мелких файлов. Очевидно, что хотелось бы эти файлы убрать в один. Допустим, что вы по какой-то причине не хотите использовать zip-сжатие (что было бы самым адекватным подходом к этой ситуации), и вместо этого хотите изобрести свой формат.
Ваша задача — по известному формату написать стрим, который читает секцию файла. Ваш стрим будет получать другой, базовый стрим, который содержит данные, и ваша задача — найти нужную секцию и прочитать. Эта задача осмысленна, поскольку, например, Bitmap.FromStream
принимает именно Stream
, и вы можете подставить туда ваш стрим для того, чтобы все работало.
Дополнительное ограничение: из базового стрима нужно читать порциями ровно по 1024 байт. Число произвольное, но это ограничение нужно: плохо слишком часто обращаться к стриму (сам факт чтения несет дополнительные расходы, в некоторых случаях не зависящие от количества прочитанных байт), и плохо читать все сразу, поскольку стрим может быть очень большой и не поместиться в памяти. Найдите стандартный способ обеспечить это условие.
Скачайте проект Streams.Resources. Детали формата можно посмотреть в конструкторе TestStream
.
1 2 3 4 5 6 7 8 9 |
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Streams.Resources { |
Стоимость решения этой задачи всего 100 рублей, закажи решения у меня 🙂