Как наиболее эффективно пропустить некоторое количество байтов в любомStream
?
Если возможно, я хотел бы получить или броситьEndOfStreamException
при попытке пропустить конец потока.
Я пишу пользовательский поток Reader
для примитивных типов данных ISO 9660, и это может потребовать большого количества пропусков в потоках с возможностью поиска и без -с возможностью поиска, как с небольшими числами (4 ), так и с большими числами (. 2048 )байт. Поэтому я хочу реализовать метод Skip(int count)
, который немного более эффективен, чем чтение и отбрасывание пропущенных байтов.
Например, в потоке с возможностью поиска я мог бы сделать stream.Position += 4
, но это не выдает EndOfStreamException
при поиске после конца потока, и я не знаю, как проверить это без читая что-то. Для потоков без -поиска установка Position
даже не вариант, но чтение и последующее отбрасывание большого количества байтов и выделение неиспользуемых массивов байтов кажется очень расточительным.