Если вы хотите свести к минимуму работу, я просто разбил бы данные на 1 МБ (или что-то еще), а затем поместил их в архив PKZIP. Затем вам понадобится чуть-чуть кода внешнего интерфейса, чтобы взять смещение файла, и разделить на 1M, чтобы получить нужный файл для распаковки (и, очевидно, использовать оставшуюся часть, чтобы получить правильное смещение в этом файле). 1001 *
Изменить: Да, существует код для обработки этого. Последние версии распаковки Info-zip (версия 6.0 актуальна) включают api.c
. Среди прочего, в том числе UzpUnzipToMemory
- вы передаете ему имя ZIP-файла и имя одного из файлов в этом архиве, который вы хотите получить. Затем вы получите буфер, содержащий содержимое этого файла. Для обновления вам понадобится api.c
из zip3.0, используя ZpInit
и ZpArchive
(хотя они не так просты в использовании, как сторона распаковки).
Кроме того, вы можете просто запустить копию zip / unzip в фоновом режиме, чтобы сделать работу. Это не так аккуратно, но, несомненно, немного проще в реализации (а также позволяет легко переключать форматы, если вы выберете).