В теории - можно, но компонент предназначен для более элементарных вещей.
Точнее, формат GZIP имеет конкретную спецификацию и предназначен для сжатия одного файла. Поэтому линуксоиды для сжатия множества файлов сначала пакуют их в несжатый контейнер *.tar, затем этот файл подают на gzip, получая *.tar.gz - архив с одним файлом *.tar внутри.
Ты можешь сам попробовать реализовать это стандартными компонентами и работой со Stream в данном компоненте.
Открываешь конечный файл компонентом FileStream (1), с помощью DataToFile пишешь туда имя файла, сохраняешь отдельно текущую позицию в (1), увеличиваешь позицию (пропускаешь) на 4 байта (будущий размер сжатого файла). Потом открываешь вторым FileStream(2) сжимаемый файл и с помощью GZIP сжимаешь его в конечный поток (1). В конце компонент выдаёт размер записанного файла - возвращаешь позицию в потоке (1) на сохраненное раньше значение и пишешь размер.
Закрываешь поток (2), переходишь в конец потока (1) и повторяешь процесс для следующего файла.
Распаковка - открываешь контейнер, читаешь имя файла, читаешь размер, распаковываешь требуемое количество в отдельный файл с оригинальным именем.
Ответов: 4612
Рейтинг: 746
|
|||
карма: 26 |
|
Редактировалось 2 раз(а), последний 2019-03-14 14:07:16