Создание частичного (или ограниченного) FileStream в C #

У меня есть FileStream, который состоит из нескольких файлов, помещенных в один файл, и у меня есть список длин файлов, другими словами, я могу легко вычислить положение и длину всех файлов. Я хочу создать метод Open, который принимает индекс файла и возвращает поток, содержащий только этот файл. В настоящее время я реализовал это, используя поток памяти, но это заставляет меня копировать весь (не контейнер, а весь содержащийся) файл в память, и я не хочу этого делать. Итак, я хотел бы иметь возможность создать класс, который реализует поток и принимает другой поток, смещение и параметр длины, а затем его можно читать и искать, только когда вы выполняете Seek (0), вы должны перейти к смещению нижележащего ручья. Так же, как адаптер-класс, и мне было интересно, возможно ли это, или даже хорошая идея, или есть ли у кого-нибудь лучшие идеи, как решить эту проблему. Я понимаю, что если я сделаю это так, как я только что описал, мне нужно убедиться, что доступ к нижележащему потоку синхронизирован,и что все открытые частичные потоки содержат частную переменную, сообщающую им, где они находятся в данный момент в потоке, но это, вероятно, должно быть дублировано, верно? кто-нибудь делал что-нибудь подобное раньше? Или есть простой .NET-класс, который я могу просто использовать? Любая помощь будет принята с благодарностью.

Ой, извините за плохой английский, я забыл установить свой браузер на английском языке, поэтому проверка орфографии говорит мне, что все не так.

10
задан Alxandr 13 June 2011 в 17:50
поделиться