Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Программы работы с архивами



Программы-упаковщики (архиваторы) позволяют за счет применения специальных методов «упаковки» данных сжимать информацию на дис­ках, то есть создавать копии файлов меньшего размера, а также объеди­нять копии нескольких файлов в один архивный файл. Архивирование используют при хранении резервных копий на дискетах или жестких дисках, а также при создании дистрибутивов программных продуктов, чтобы сэкономить емкость носителя - компакт-диска или дискет. Следу­ет отметить, что различные упаковщики не совместимы друг с другом — архивный файл, созданный одним упаковщиком, чаще всего нельзя прочесть другим. Поэтому большинство грамотных пользователей дер­жат в системе несколько основных программ архиваторов. Наибольшее распространение получили такие программы, как ZIP, ARJ, RAR, LHA и некоторые другие.

Основными характеристиками архиватора являются:

степень сжатия информации (отношениеразмера исходного файла к размеру упакованного файла);

скорость работы;

качество сервиса (набор функций и удобство работы с ними).

Для архивного хранения информации применяются только алгоритмы, производящие сжатие без потерь, то есть допускающие восстановление исходной информации «байт в байт». Существует несколько основных методов упаковки информации - по алгоритмам Running, LZW и Huff­man.

Running - самый простой из них. Предположим, имеется строка текста, в конце которой стоит 40 пробелов. Налицо явная избыточность информации. Проблема сжатия этой строки решается очень просто: 40 пробелов (40 байт) сжимаются в 3 байта с помощью упаковки их по методу повторяющихся символов (running). Первый байт, стоящий вместо 40 пробелов в сжатой строке, также будет являться пробелом. Второй байт

- специальный байт «флага», который указывает что при восстановлении строки необходимо развернуть предыдущий байт в строке в последова­тельность. Третий байт указывает количество повторов (в данном случае 40). Как видно из этого примера, если всякий раз, когда в строке идет более трех одинаковых символов подряд, заменять их вышеописанной последовательностью, на выходе будет получен блок информации меньшего размера, но допускающий полное восстановление исходной строки.

История алгоритма LZW началась с опубликования в мае 1977 г. Дж. Зивом (J.Ziv) и А. Лемпелем (A.Lempel) статьи в журнале «Инфор­мационные теории» под названием «IEEE Trans». Впоследствии он был доработан Терри А. Велчем (Terry A.Welch) и в окончательном варианте описан в статье «ШЕЕ Compute», вышедшей в июне 1984 г. В ней рас­крывались детали алгоритма и некоторые общие проблемы, с которыми можно столкнуться при его реализации. Позже он получил название LZW (Lempel - Ziv - Welch).

Алгоритм LZW представляет собой средство кодирования после­довательностей неодинаковых символов. Возьмем для примера строку «Объект TSortedCollection порожден от TCollection». Анализируя ее, мы видим, что слово «Collection» повторяется дважды. В этом слове 10 символов (80 бит). Если заменить это слово при втором его включении на ссылку на первое включение, будет достигнуто сжатие информации. Если рассматривать входной блок информации размером не более 64К и ограничиться длиной кодируемой строки в 256 символов, с учетом байта флага получим, что строка из 80 бит заменяется 8+16+8=32 би­та. Алгоритм LZW как бы «обучается» в процессе сжатия файла. Если в файле существуют повторяющиеся строки, они будут закодированы в таблицу. Очевидным преимуществом алгоритма является то, что нет необходимости включать таблицу кодировки в сжатый файл. Другой важной особенностью является то, что сжатие по алгоритму LZW осу­ществляется в один проход в противоположность алгоритму Хаффмана (Huffman), которому требуется два прохода.

При сжатии по алгоритму Хаффмана первое, что необходимо сделать — это прочитать файлполностью и подсчитать, сколько раз встречается в нем каждый символ из расширенного набора ASCII. Если учитывать все 256 символов, то не будет разницы в сжатии текстовых и ЕХЕ-фай-лов. После подсчета частоты вхождения каждого символа, необходимо просмотреть таблицу кодов ASCII и сформировать мнимую компоновку между кодами по убыванию. То есть, не меняя местонахождение каждого символа из таблицы в памяти, отсортировать таблицу ссылок на них по убыванию. Каждую ссылку из последней таблицы называют «узлом». В дальнейшем (в дереве) будут размещены указатели на этот узел. После создания дерева, с известной частотой вхождения для каждого символа, можно кодировать файл. Кодируя первый символ, мы прослеживаем все повороты ветвей вверх по дереву; если делается левый поворот, записы­ваем 0, если правый - 1. Каждый символ изначально представлялся 8-ю битами (один байт), и так как мы уменьшили число битов, необходимых для представления каждого символа, соответственно уменьшается раз­мер выходного файла.

Степень сжатия определяется следующим образом. Если перво­начальный размер файла 100 байт (800 бит), а размер сжатого файла 30 байт (240 бит), мы сжали файлна 70%. Проблема, однако, состоит в том, что для восстановления первоначального файла нужно иметь декодирующее дерево, так как деревья будут различны для разных фай­лов. Следовательно, необходимо сохранять дерево вместе с файлом, что приводит к его увеличению. В нашем примере полная таблица для 256 байт будет приблизительно в 1 Кбайт длиной. Дерево имеет 5 узлов плюс 6 вершин (где и находятся наши символы), всего - И. Требуемые 4 байта, повторенные 11 раз, дают 44 байта. Если мы добавим несколько байтов для сохранения места узла и некоторую другую статистику, получится таблица длиной примерно в 50 байтов. Сложив их с 30 байтами сжатой информации, получим общую длину архивного файла 80 байт. Учиты­вая, что первоначальная его длина составляла 100 байт, степень сжатия будет 20%. Так осуществляется трансляция символьного ASCII-набора в новый набор, требующий меньшее количество знаков по сравнению со стандартным.

Итак, мы имеем в итоге 256 различных комбинаций, которыми можно кодировать байт. Из этих комбинаций лишь 2 по длине равны 8 битам. Если мы сложим число битов, то в итоге получим 1554 бит, или 195 бай­тов. В пределе мы сводим 256 байт к 195, сжимая информацию на 33%. Таким образом, «идеализированный» Huffman может достигать сжатия в 33%, когда используется на уровне байта. Кроме того, алгоритмХафф­мана требует читать входной файлдважды: один раз для подсчета частоты вхождения символов, второй - при непосредственном кодировании.

Большинство архиваторов могут работать в трех режимах: оконном (полноэкранном), консольном (режиме командной строки) и фоновом. В оконном режиме программавыполняется в отдельном окне с собствен­ным интерфейсом. Версии, разработанные под MS DOS, могут выпол­нятся в полноэкранном режиме.

В режиме командной строки программе в виде параметров передаются основные условия процесса архивирования: вид операции, имена ис­ходных файлов, имя и место расположения архивного файла и др. В фоно­вом режиме программаархивации вызывается любой другой прикладной программой (например, файловым менеджером), выполняет указанные действия и передает ей результат незаметно для пользователя.

Большинство архиваторов имеют однотипный набор команд и близкие параметры сжатия.

Архиватор ARJ работает в режиме командной строки; он обеспечивает сжатие приблизительно в 60-70% для текстовых и 20-30% для испол­няемых файлов (программ). Основные его возможности: добавление и извлечение файлов из архива, архивирование с паролем, создание много­томных архивов и др.

Архиватор RAR (WinRAR) был создан как универсальное средство сжа­тия файлов, содержащих самую различную информацию; он объединяет достоинства и удобства программ обоих классов - архиватора командной строки и полноэкранной оболочки для просмотра архивами и разнообраз­ных операций с ними. В некоторых случаях RAR не может быть заменен ни одним из других архиваторов, а логичный и простой интерфейс делает его удобным средством для работы с архивами и файлами.

По своим техническим характеристикам RAR не уступает другим наиболее популярным архиваторам, а по некоторым показателям и пре­восходит их. Для файлов типа.EXE,.COM,.LIB,.OBJ,.OVR и аналогич­ных им RAR обеспечивает максимальную степень сжатия, превосходя PKZIP и ARJ примерно на 0,5 - 3% (кроме ЕХЕ- и СОМ-файлов, уже сжатых программами THnaLZEXE, PKLITE, DIET). На отдельных файлах (больших.LIB и некоторых других) выигрыш может достигать 5-7% от упакованного размера. Применяемый метод сжатия обычно существенно не влияет на результат.

Дополнительные возможности программы RAR:

разбиение архива на части (volumes) для переноса на дискеты;

создание самораспаковывающихся архивных томов (SFX);

создание непрерывных (solid) архивов с более высокой степенью сжатия;

защита информациипаролем;

защита архивов от модификации;

восстановление структуры поврежденных архивов;

добавление комментариев ко всему архиву и к отдельным файлам.

Пожалуй, самый популярный из нынешних архиваторов - WinZip', эта программапредназначена для архивации файлов и их извлечения из архивов. Интерфейс WinZip версии 8.0 напоминает интерфейс Windows Explorer (включая кнопки панели управления). Как и Explorer, WinZip при создании или обновлении архивов автоматически сохраняет информацию о папках и подпапках.

В версии 8.0 появилась новая опция View as Web Page и опция Zip and E-Mail, позволяющая заархивировать документ и вложить его в элек­тронное письмо, не покидая окна проводника Windows Explorer. Чтобывоспользоваться этой возможностью, достаточно щелкнуть правой кнопкой мыши на имени файла и выбрать пункт Zip and E-Mail из всплы­вающего меню. При этом WinZip создаст Zip-файли поместит в новое сообщение электронной почты. Zip-файл будет автоматически удален сразу после того, как почтовая программаперестает в нем нуждаться.

Программа WinZip Self-Extractor Personal Edition поддерживает соз­дание самораспаковывающихся архивов. Они необходимы для передачи упакованной информации получателю, у которого может не оказаться нужной программы распаковки.

Так же, как и в Windows Explorer, в WinZip при щелчке правой кнопкой мыши на файле в списке архива появляется контекстное меню, вклю­чающее действия, которые можно проделать с этим конкретным типом файла (например, Open, Print или New). Если удерживать во время щелчка нажатой клавишу Shift, в меню появляется дополнительный пункт Open With..., что дает возможность сразу же выбрать нужное приложениедля открытия файлов. WinZip теперь, как и Windows Explorer, осуществляет операции с директориями и поддиректориями (папками и подпапками). Программа сохраняет всю информацию о путях файлов так же, как это делает Explorer при выполнении операций копирования и вставки.

Когда курсор мыши указывает на Zip-файл, программавыводит под­сказку, в которой содержится информация о том, сколько файлов имеется в архиве; появляется и комментарий к архиву, если он есть. Когда от­крывается Zip-файл, содержащий комментарии, WinZip выводит новую иконку в строке состояния. Щелкнув на этой иконке, можно просмотреть и отредактировать комментарий.





Дата публикования: 2014-11-18; Прочитано: 804 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...