На страницах "Компьютерных вестей" я уже неоднократно рассказывал о самых разных библиотеках для программистов. Тем не менее, их такое большое количество, что знакомиться можно практически бесконечно. Впрочем, думаю, библиотека ZipTV запомнится не просто в качестве очередной, непонятно зачем нужной программной библиотеки...
Немного "болтологии"
Как известно, сжатие данных - это задача, отличающаяся большим количеством прикладных приложений. Сжимается сегодня все и всюду, и это совсем не удивительно в свете того, что объемы данных, которые сегодня хранятся на серверах и компьютерах пользователей, просто колоссальны. Представьте себе размеры базы видеороликов того же YouTube, если бы они там хранились безо всякого сжатия. Или, например, индекса поисковой системы, который содержит десятки и даже сотни миллионов страниц, найденных в сети поисковым роботом? Так что, как видите, несмотря на рост объемов жестких дисков и "толщины" каналов передачи данных, без сжатия данных современная ИТ-индустрия долго бы не протянула.
Впрочем, даже если отвлечься от таких грандиозных вещей, как поисковая система или видеосервис масштабов YouTube, все равно понимаешь, что от компрессии никуда не деться. Хотите читать файлы нового открытого формата Microsoft Office Open XML? Тогда вам нужна поддержка работы с ZIP-архивами - именно в них складываются, в конечном итоге, те самые XML'и, которые обещает нам название этого формата. Пишете клиент электронной почты? Тоже весьма предпочтительно будет дать пользователю возможность, не прибегая к внешним утилитам, сжать отправляемые документы.
Вместе с тем, когда встает вопрос о добавлении подобной функциональности в приложение, нужно хорошо подумать, стоит ли "изобретать велосипед" или лучше воспользоваться готовыми решениями. Действительно, в отдельных случаях (например, если речь идет об уже упоминавшемся индексе поисковой системы) разработка отдельных алгоритмов, которые оптимизированы под конкретный вид данных, имеет смысл. Но для большинства приложений нужна поддержка уже давно распространившихся по всему миру стандартов, с чем более чем замечательно справляются готовые библиотеки. И одна из таких библиотек - как раз ZipTV (ziptv.com), о которой сейчас пойдет разговор.
Общий обзор
Для начала стоит оговориться, что эта библиотека предназначена для средств разработки, которые в наше время уже можно считать почти экзотикой - для Delphi и C++ Builder. Между тем не стоит думать, что если в списке вакансий на сайтах с поиском работы программисты, специализирующиеся на них, встречаются нечасто, то и сами эти среды уже стали мертвыми и никому не нужными. Компания Embarcadero, которая в последние несколько лет занимается их разработкой, обнародовала достаточно амбициозные планы на будущее, да и уверенно удерживаемое место в рейтинге языков программирования говорит о том, что Delphi используется.
Впрочем, вернемся к нашей библиотеке. Основное её назначение - добавление в приложения, создаваемые в Delphi и C++ Builder, возможностей работы с архивами разных форматов. Причем список поддерживаемых форматов весьма внушителен: для компрессии поддерживаются форматы BlackHole, BZ2, GZip, JAR, ZIP, LHA, TAR, CAB, 7z, а для распаковки, в придачу к уже перечисленным, ACE, ARC, ARJ, RAR и ZOO. Также поддерживается кодирование и декодирование файлов с использованием алгоритмов UUE и XXE. Впрочем, распаковка и упаковка архивов указанных форматов - далеко не единственные задачи, которые позволяет решать данный программный продукт. Входящие в эту библиотеку VCL-компоненты дают разработчикам возможность реализовывать очень многие вещи, не прибегая к написанию большого количества кода. Собственно, об этих возможностях библиотеки мы с вами сейчас и поговорим.
Библиотека вблизи
Собственно, все содержащиеся в библиотеке компоненты можно разделить на четыре большие группы: это компоненты для сжатия данных, компоненты для распаковки, компоненты для работы с многотомными архивами и различные вспомогательные компоненты.
О компонентах, предназначенных для создания архивов и их распаковки, мы уже, по большому счету, поговорили. Потому что каждому из перечисленных выше поддерживаемых архивных форматов соответствует по одному компоненту для упаковки и распаковки архивов (то есть, если поддерживается только распаковка архивов данного формата, то компонент, конечно, есть только для этой самой распаковки). Несколько особняком в этом списке стоит компонент TArchiveStream, который позволяет работать не с отдельными файлами, а с данными в потоковом режиме. Дело в том, что компоненты, входящие в состав библиотеки ZipTV, ориентированы именно на упаковку данных в конкретные архивные файлы, и, соответственно, на распаковку файлов архивных форматов. Но зачастую работать удобнее не с файлами, а просто с потоками данных - например, в случаях, когда эти данные передаются по сети. Вот именно для таких случаев и пригодится такой компонент.
Рассказ о компонентах для работы с многотомными архивами тоже, в общем-то, будет достаточно лаконичным. Почему? Да потому, что этих компонентов не так уж и много. Вернее, их даже, можно сказать, мало - всего три. Первый, TArchiveSplitter, позволяет разделять ZIP-архивы, уже созданные раньше, на "тома" заданного пользователями объема. Разработчики библиотеки подчеркивают, что тот факт, что в настоящее время поддерживается разбиение на части только ZIP-архивов - это временные трудности, и в ближайшем будущем у нас есть все шансы стать свидетелями выхода версии библиотеки, в которой этот компонент уже будет поддерживать разные форматы архивов. Второй по счету компонент из этой категории, TZipSplitter, объединяет в себе функции TArchiveSplitter и компонента TZip, предназначенного для создания ZIP-архивов - то есть, говоря русским языком, он не только позволяет разбивать на части уже созданные архивы, но и сразу паковать файлы в архивы, состоящие из нескольких частей. Третий по счету компонент называется TZipSplitGlue. Думаю, что уже даже просто посмотрев на его название, вы можете сказать, что его назначение органично дополняет функциональность двух предыдущих компонентов - то есть, он позволяет "склеивать" разбитые на несколько частей архивы. Поддерживаются им, опять-таки, только ZIP'ы.
Что ж, давайте перейдем к третьей, самой многочисленной категории компонентов. Компонент TArc2Arc позволяет конвертировать архивы из одного формата в другой - при этом поддерживаются все те форматы, с которыми предусмотрена работа в других компонентах библиотеки. Компонент TArchiveEditor позволяет изменять свойства файлов, содержащихся в архивах, - переименовывать их, изменять атрибуты, устанавливать даты создания и т.д., и т.п. Компонент TMakeSFX предназначен, как можно догадаться по его названию, для создания самораспаковывающихся (SFX) архивов. Что приятно, здесь уже поддерживаются не только ZIP'ы, а целых 9 разных архивных форматов. Компонент TTurboSearch позволяет осуществлять быстрый поиск по файлам, содержащимся в архиве. TZipCheck дает возможность проверять целостность ZIP-архивов - весьма полезная, надо сказать, возможность, учитывая склонность архивов вообще и ZIP'ов, в частности, к разного рода повреждениям при передаче. Компонент TZipKey реализует ничуть не менее полезную возможность - он позволяет подбирать забытые (не могу не отметить, что сами авторы продукта пишут это слово в кавычках) пароли к архивам. Поддерживает подбор паролей по спискам - но, конечно, вряд ли стоит ожидать от этого компонента столь же высокой скорости работы, какой могут похвастаться различные специализированные утилиты.
Компонент TFileScan отличается от всех остальных тем, что не имеет практически никакого отношения ни к сжатию данных, ни к архивам. Этот компонент просто предлагает удобный поиск файлов по маскам имен, причем поддерживает одновременно несколько масок. Компонент TZipView предназначен для просмотра содержимого архивов в виде списка "заключенных" внутрь файлов. Компонент TZipTV (ничем не напоминает название самой библиотеки?) - это универсальный front-end для всего многообразия компонентов для сжатия и распаковки данных, которое предлагает библиотека. TztvPreviewDialog - это диалог открытия архива, позволяющий при выборе файла бегло просмотреть, что же в нем, собственно говоря, содержится. Задача компонента TUnSFX, как понятно по его названию, диаметрально противоположна задаче компонента TSFX - он дает возможность "отрезать" модуль, ответственный за самораспаковку, от SFX-архивов. Компонент TZipRun предназначен для извлечения и запуска с помощью ассоциированных программ файлов, содержащихся в архиве. Компонент TZipSearch позволяет искать в архивах текстовую информацию - в целом, его назначение достаточно похоже на назначение компонента TTurboSearch. TztvFindFile также предназначен для поиска файлов в архиве, но уже по маске имени. Ну а TZipTV_Clipboard дает возможность осуществлять компрессию данных непосредственно из буфера обмена Windows (и декомпрессию в него тоже).
Резюме
Что ж, как видите, ZipTV - действительно полезная и мощная библиотека, которая предлагает много разных компонентов для создания функциональных приложений, работающих с архивами. Думаю, если вы примете решение об её использовании в своих проектах, вряд ли пожалеете об этом.
Вадим СТАНКЕВИЧ,
[email protected]
Комментарии