2009-07-27 3 views
4

Я ищу способ извлечь файл в C++, используя классы boost :: iostreams.извлечение сжатого файла с boost :: iostreams

Существует пример в boost documentation. Но он выводит содержимое сжатого файла в std :: cout. Я ищу способ извлечь его в файловую структуру.

Кто-нибудь знает, как это сделать?

Спасибо!

+0

Что вы подразумеваете под «файловой структурой»? – jalf

+0

Я говорю о сжатом файле, который содержит несколько других файлов и каталогов. –

ответ

5

Boost.IOStreams не поддерживает сжатые архивы, только отдельные сжатые файлы. Если вы хотите извлечь файл .zip или .tar в дерево каталогов, вам нужно будет использовать другую библиотеку.

1

Выглядит как вызов для boost :: iostreams :: copy принимает второй поток как второй параметр. Вы пытались создать поток из вашего выходного файла и использовать его?

+0

Jep, уже пробовал, что создает только один файл с кучей мусора внутри него, он не создает полную файловую структуру ... –

+0

Что означает «полная файловая структура»? Действительно ли он производит правильный вывод на cout? Если это так, то должно быть легко заставить это работать ... – bacar

2

Пример в документации показывает, как распаковать файл и нажать результат на другой поток.

Если вы хотите, чтобы выход был направлен на массив в памяти, вместо этого вы можете использовать поток типа boost::iostreams::stream<boost::iostreams::array_source>.

Это в основном обтекатель потока вокруг массива.

Я не уверен, что вы имеете в виду, когда говорите, что хотите получить в «файловой структуре».

1

Возможно, вы не хотите эту библиотеку. Возможно, вам захочется осмотреться для других.

E.g. zziplib