Uploaded by Фаррух Юсупов

Архиватор

advertisement
Министерство образования Республики Беларусь
Учреждение образования
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Факультет компьютерных систем и сетей
Кафедра программного обеспечения информационных технологий
К защите допустить:
Заведующий кафедрой
________________Н.В. Лапицкая
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту
на тему
АРХИВАТОР
Студент
Руководитель:
///////////////////////
Игнатович.Ю.Б
Минск 2021
1
СОДЕРЖАНИЕ
ВВЕДЕНИЕ………………………………………………………………………………..
Ошибка! Закладка не определена.
1.ПЛАТФОРМА ПРОГРАММЫ…………………………………………………………5
2.ТЕОРЕТИЧЕСКОЕ ОБОСНОВАНИЕ РАЗРАБОТКИ ПРОГРАММНОГО
ПРОДУКТА………………………………………………………………………………8
3.ПРОЕКТИРОВАНИЕ ГРАФИЧЕСКОГО ПОЛЬЗОВАТЕЛЬСКОГО
ИНТЕРФЕЙСА…………………………………………………………………………..11
4.АРХИТЕКТУРА ПРИЛОЖЕНИЯ……………………………………………………23
ЗАКЛЮЧЕНИЕ………………………………………………………………………….24
СПИСОК ЛИТЕРАТУРНЫХ ИСТОЧНИКОВ………………………………………...25
ЛИСТИНГ ПРОГРАММНОГО КОДА…………………………………………………26
Блок схема программы………………………………………………………………..…32
2
ВВЕДЕНИЕ
«Разработка Архиватора» является то, что сжатие информации позволяет
добиться уменьшения размера исходной информации для последующего ее
использования.
Существует много всяких причин выделять ресурсы ЭВМ в расчете на
сжатое представление, т.к. более быстрая передача данных и сокращение
пространства для их хранения позволяют сберечь значительные средства и за
частую улучшить показатели ЭВМ.
Сжатие, вероятно, будет оставаться в сфере внимания из-за возрастающих
объемов, хранимых и передаваемых данных в ЭВМ, кроме того, можно
использовать для преодоления некоторых физических ограничений, таких как,
например, сравнительно низкая скорость Интернета.
Свою историю архиваторы берут ещё с тех времён, когда жёсткие диски были
маленькие, и каждый (кб) был навес золота.
Архиватором удобно пользоваться ещё и потому, что он может из папки с
множеством файлов и папок сделать один единственный файл.
Объектом исследования являются наиболее распространенные программы –
архиваторы.
Чтобы успевать за развитием средств вычислительной техники, необходимо
непрерывное самообразование и самосовершенствование. Ведь часто бывает, что
мы не можем самостоятельно выбрать программу, которая бы отвечала нашим
требованиям при работе на компьютере.
При эксплуатации компьютера по самым разным причинам возможны порча
или потеря информации на жестких дисках. Это может произойти из-за физической
порчи жесткого диска, неправильной корректировки или случайного уничтожения
файлов, разрушения информации компьютерным вирусом и т.д. Для того чтобы
уменьшить потери в таких ситуациях, следует иметь архивные копии
используемых файлов и систематически обновлять копии изменяемых файлов.
3
Для сохранения информации можно её дублировать, однако при этом копии
занимают столько же места, сколько занимают исходные файлы, и для копирования
нужных файлов может потребоваться много памяти.
Более удобно использовать для создания копий специально разработанные
программы архивации файлов. Эти программы позволяют не только сэкономить
место на дискетах, но и объединять группы совместно используемых файлов в один
архивный файл, что заметно облегчает ведение архивов.
При выборе инструмента для работы с упакованными файлами и архивами
следует учитывать два фактора: эффективность, т. е. оптимальный баланс между
экономией дисковой памяти и производительностью работы, и совместимость, т. е.
возможность обмена данными с другими пользователями. Совместимость,
пожалуй, сегодня более важна, так как по достигаемой степени сжатия,
конкурирующие форматы и инструменты различаются на проценты (но не в разы),
а вычислительная мощность современных компьютеров делает время обработки
архивов не столь существенным показателем, как, скажем, десять лет назад.
Поэтому при выборе инструмента для работы с архивами важнейшим критерием
для большинства пользователей (во всяком случае, тех, для кого обмен большими
массивами данных — насущная проблема), вероятно, является способность
программы «понимать» наиболее распространенные архивные форматы, даже если
эти форматы не самые эффективные.
Цель курсовой работы – создать собственный аналог программы для
диогностике устройств и отображения информации для ОС Windows.
Автор проекта не берётся конкурировать с огромными гигантами по
количеству выполняемых этими программами тестов в силу того, что это
бессмысленно. Была предпринята попытка написать более надежную, быструю
диагностическую программу с использованием машино-ориентированного языка
программирования – Java.
4
1. ПЛАТФОРМА ПРОГРАММЫ
Прежде, чем перейти к обучению, начнём с введения в javaпрограммирование, разберёмся кратко, что это за такой язык
программирования. Немного истории языка java. Язык Java разработан
компанией Sun Microsystems, создателем которого был Джеймс Гослинг, и
выпущен в 1995 году в качестве основных компонентов компании Sun
Microsystems — Java платформ (Java 1.0 [J2SE]).
История создания языка Java начинается в июне 1991 года, когда
Джеймс Гослинг создал проект для использования в одном из своих
многочисленных сет-топ проектов. Язык, который рос вне офиса Гослинга, как
дуб, Oak - первоначальное название Java до 1995 года, после в дальнейшем
история Java продолжалась под именем Green, а позже был переименован как
Java.
Но официальной датой создания языка Java считается 23 мая 1995 года,
после выпуска компанией Sun первой реализации Java 1.0. Она
гарантировала «Напиши один раз, запускай везде», обеспечивая недорогой
стоимостью на популярных платформах.
13 ноября 2006 года, Sun выпустила большую часть как свободное и
открытое программное обеспечение в соответствии с условиями GNU
General Public License (GPL).
После 8 мая 2007 года судьба Java сложилась иначе. Компания завершила
процесс, делая все чтобы исходный код был бесплатным и открытым, кроме
небольшой части кода, на который компания не имела авторских прав.
Преимущества языка Java:
- Объектно-ориентированный: в джава все является объектом.
Дополнение может быть легко расширено, так как он основан на
объектной модели.
- Платформонезависимый: в отличие от многих других языков, включая
C и C++, Java, когда был создан, он не компилировался в платформе
конкретной машины, а в независимом от платформы байт-коде. Этот
байт код распространяется через интернет и интерпретируется в Java
Virtual Machine (JVM), на которой он в настоящее время работает.
- Простой: процессы изучения и введение в язык программирования Java
остаются простыми. Если Вы понимаете основные концепции
объектно-ориентированного программирования, то он будет прост для
Вас в освоении.
- Безопасным: методы проверки подлинности основаны на шифровании
с открытым ключом.
5
- Архитектурно-нейтральным: компилятор генерирует архитектурнонейтральные объекты формата файла, что делает скомпилированный
код исполняемым на многих процессорах, с наличием системе Java
Runtime.
- Портативный: архитектурно-нейтральный и не имеющий зависимости
от реализации аспектов спецификаций — все это делает Java
портативным. Компилятор в Java написан на ANSI C с чистой
переносимостью, который является подмножеством POSIX.
- Прочный: прилагает усилия, чтобы устранить ошибки в различных
ситуациях, делая упор в основном на время компиляции, проверку
ошибок и проверку во время выполнения.
- Многопоточный: функции многопоточности, можно писать
программы, которые могут выполнять множество задач одновременно.
Введение в язык Java этой конструктивной особенности позволяет
разработчикам создавать отлаженные интерактивные приложения.
- Интерпретированный: Java байт-код переводится на лету в машинные
инструкции и нигде не сохраняется. Делая процесс более быстрым и
аналитическим, поскольку связывание происходит как дополнительное
с небольшим весом процесса.
- Высокопроизводительный: введение Just-In-Time компилятора,
позволило получить высокую производительность.
- Распространенный: предназначен для распределенной среды
интернета.
Недостатки Java
- Платное коммерческое использование
Недавно Oracle объявила, что с 2019 года компания начнет
взимать плату за использование Java Standard Edition 8 в
«коммерческих целях».
- Низкая производительность
У любого языка высокого уровня довольно низкая
производительность из-за компиляции и абстракции с
помощью виртуальной машины.
- Отсутствие нативного дизайна
Для создания графического интерфейса пользователя (GUI)
разработчики используют различные инструменты,
ориентированные для конкретного языка. Для Androidприложений есть Android Studio, которая помогает создавать
приложения с нативным дизайном. Однако, когда дело
6
доходит до пользовательского интерфейса на ПК, Javaинструмента для создания нативного дизайна нет.
- Многословный и сложный код
Для создания графического интерфейса пользователя (GUI)
разработчики используют различные инструменты,
ориентированные для конкретного языка. Для Androidприложений есть Android Studio, которая помогает создавать
приложения с нативным дизайном. Однако, когда дело
доходит до пользовательского интерфейса на ПК, Javaинструмента для создания нативного дизайна нет.
7
2.Теоретическое обоснование разработки программного продукта
Архивация - это сжатие, уплотнение, упаковка информации с целью ее
более рационального размещения на внешнем носителе (диске или дискете).
Архиваторы - это программы, реализующие процесс архивации, позволяющие
создавать и распаковывать архивы.
Необходимость архивации связана с резервным копированием
информации на диски и дискеты с целью сохранения программного
обеспечения компьютера и защиты
его от порчи и
уничтожения
(умышленного, случайного или под действием компьютерного вируса). Чтобы
уменьшить потери информации, следует иметь резервные копии всех
программ и файлов.
Программы-упаковщики (архиваторы) позволяют за счет специальных
методов сжатия информации создавать копии файлов меньшего размера и
объединять копии нескольких файлов в один архивный файл. Это даёт
возможность на дисках или дискетах разместить больше информации, то есть
повысить
плотность хранения информации на единицу объёма носителя
(дискеты или диска).[1]
Кроме того, архивные файлы широко используются для передачи
информации в Интернете и по электронной почте, причем благодаря сжатию
информации повышается скорость её передачи. Это особенно важно, если
учесть, что быстродействие модема и канала связи (телефонной линии)
намного меньше, чем процессора и жесткого диска.
Работа архиваторов основана на том, что они находят в файлах
повторяющиеся участки и пробелы, помечают их в архивном файле и затем
при распаковке восстанавливают по этим отметкам исходные файлы.
Простейшие
архиваторы
просто
последовательно
объединяют
содержимое файлов в архив. Кроме него, архив должен также содержать
информацию об именах файлов и длине оригиналов для их восстановления.
Большинство
архиваторов
также
сохраняют
метаданные
файлов,
предоставляемые операционной системой, такие, как время создания и права
доступа. Программа, создавая архив, обрабатывает как текстовые файлы, так
8
и бинарные файлы. Первые всегда сжимаются в несколько раз (в зависимости
от архиватора). Что же касается бинарных файлов, то здесь все зависит от их
характера. Может быть сжато в десятки раз, но могут быть и случаи, когда
сжатие почти не происходит. Сжатие данных обычно происходит значительно
медленнее, чем обратная операция.
Различными разработчиками были созданы специальные программы для
архивации файлов. Часть из них распространяется бесплатно, часть - на
коммерческой основе (за плату), но большинство программ такого рода
распространяются как “Shareware”. Т.е. они могут быть получены бесплатно,
но если Вы хотите их использовать постоянно, то должны выслать авторам
или распространителям указанное (обычно небольшое, до 50 дол.)
вознаграждение.
Как правило, программы для архивации файлов позволяют помещать
копии файлов на диске в сжатом виде в архивный файл, извлекать файлы из
архива, просматривать оглавление архива и т.д. Разные программы
отличаются форматом архивных файлов, скоростью работы, степенью сжатия
файлов при помещении в архив, удобством использования.
Наиболее
распространенные
программы-архиваторы
имеют
приблизительно одинаковые возможности и ни одна из них не превосходит
другие по всем параметрам: одни программы работают быстрее, другие
обеспечивают лучшую степень сжатия файлов. Даже если сравнивать
программы только по степени сжатия, то среди них нет лидера: разные файлы
лучше сжимаются разными программами.
Архиваторы бывают нескольких видов:
- объединяющие группу файлов в один большой (без сжатия);
- сжимающие без потерь данных;
- сжимающие с потерями данных.
Существует несколько десятков различных форматов упаковки. Каждая
программа, выполняющая сжатие данных, использует свой формат, но
наиболее часто встречаются форматы .ZIP, .ARJ и .RAR.
9
При упаковке данных не стоит «разбрасываться» и применять много
архиваторов. Достаточно сосредоточиться на одной-двух программах и
настойчиво их эксплуатировать, хотя прежде чем передавать сжатый файл
постороннему лицу, стоит убедиться, что у него есть средства для его
распаковки. В случае необходимости можно договориться об используемом
архиваторе, а лучше создать самораспаковывающийся архив. Это позволяет
договориться даже с человеком, который вообще ничего об архиваторах не
знает.
Программа проста в использовании и не требует никаких навыков
работы с ней. В программе могут работать как профессиональные, так и не
опытные пользователи. Создаем первую форму, переименовываем ее в
«Архиватор» и располагаем на ней следующие элементы управления
1-Кнопка для запуска программы (Запуск)
2-Два чекбокса (флажок) для добавления функций
3- В данном компоненте создаем 2 вкладки – «Архиватор»
«разархиватор».
10
3. ПРОЕКТИРОВАНИЕ ГРАФИЧЕСКОГО ПОЛЬЗОВАТЕЛЬСКОГО
ИНТЕРФЕЙСА
В современном мире миллиарды вычислительных устройств. Еще больше
программ для них. И у каждой свой интерфейс, являющийся «рычагами»
взаимодействия между пользователем и машинным кодом. Не удивительно,
что чем лучше интерфейс, тем эффективнее взаимодействие.
Однако далеко не все разработчики и даже дизайнеры, задумываются о
создании удобного и понятного графического интерфейса пользователя.
Общие принципы
- Интерфейс должен быть интуитивно понятным. Таким, чтобы
пользователю не требовалось объяснять как им пользоваться.
- Для упрощения процесса изучения необходима справка. Буквально —
графическая подсказка, объясняющая значение того или иного ЭИ.
Полное руководство должно быть частью интерфейса, доступной в
любой момент.
- Возвращайте пользователя в то место, где он закончил работу в
прошлый раз. Зачем нажимать все заново?
- Чаще
всего,
пользователи
в
интерфейсе
сначала
ищут
сущность(существительное), а затем действие(глагол) к ней. Следуйте
правилу «существительное -> глагол». Например, шрифт -> изменить.
- Чем быстрее человек увидит результат — тем лучше. Пример —
«живой» поиск, когда варианты, в процессе набора поискового запроса.
Основной принцип: программа должна взаимодействовать с
пользователем на основе наименьшей значимой единицы ввода.
- Следует с осторожностью предоставлять пользователю возможность, по
установке личных настроек. Представьте, сколько времени потратит
сотрудник настраивая Word, если его интерфейс был полностью
переделан предыдущим.
- Чем больше пользователь работает с какой-то конкретной задачей, тем
больше он на ней концентрируется и тем меньше перестает замечать
подсказки и сообщения, выводимые программой. Чем более
критической является задача, тем меньше вероятность того, что
пользователь заметит предупреждения относительно тех или иных
потенциально опасных действий.
- Какие ЭИ создать?
- Разработка интерфейса обычно начинается с определения задачи или
набора задач, для которых продукт предназначен
- Простое должно оставаться простым. Не усложняйте интерфейсы.
Постоянно думайте о том, как сделать интерфейс проще и понятнее.
- Пользователи не задумываются над тем, как устроена программа. Все,
что они видят — это интерфейс. Поэтому, с точки зрения потребителя
именно интерфейс является конечным продуктом.
11
- Интерфейс должен быть ориентированным на человека, т.е. отвечать
нуждам человека и учитывать его слабости. Нужно постоянно думать о
том, с какими трудностями может столкнуться пользователь.
- Интерфейс должен быть ориентированным на человека, т.е. отвечать
нуждам человека и учитывать его слабости. Нужно постоянно думать о
том, с какими трудностями может столкнуться пользователь.
- Думайте о поведении и привычках пользователей. Не меняйте хорошо
известные всем ЭИ на неожиданные, а новые делайте интуитивно
понятными.
В общем виде вкладка «Архиватор» показана на рисунке 3.1.
Рис. 3.1. Общий вид
При нажатии на кнопку «Открыт директорую» можно посмотрет
файлы
12
«Проводник» на рисунке 3.2.
Рис. 3.2. Проводник
При нажатии на кнопку «Окрыть» начинается процесс архивации
показана на рисунке 3.3.
Рис. 3.3. процесс архивации
ОБЗОР НЕКОТОРЫХ ПРОГРАММ-АРХИВАТОРОВ
13
WinRAR — это файловый архиватор для Windows с высокой степенью
сжатия, является одним из лучших архиваторов по соотношению степени
сжатия к скорости работы.
Распространяется по shareware-лицензии. Версия для платформы Pocket
PC имеет лицензию Freeware.
Рис. 3.4. Окно архиватора Win RAR
Технические характеристики
1. Степень сжатия:
-
На файлах типа .EXE, .COM, .LIB, .OBJ, .OVR и аналогичных им
RAR как правило обеспечивает максимальную по сравнению с другими
архиваторами степень сжатия, превосходя их примерно на 0.5 - 3%;
-
На отдельных файлах (больших .LIB, некоторых других)
выигрыш может достигать 5-7% от упакованного размера. Метод сжатия
обычно существенно не влияет на результат;
14
-
Текстовая информация сжимается примерно на уровне других
архиваторов (зависит от вида текста и метода сжатия) на файлах до 32
килобайт размером. На больших текстовых файлах RAR обычно превосходит
большинство других архиваторов;
-
При упакове файлов баз данных существенно влиять на размер и
время работы может метод сжатия (m0 - m5);
-
Степень сжатия графической информации сильно зависит от рода
файлов;
-
При создании непрерывного (solid) архива, содержащего много
небольших однотипных файлов, степень сжатия на 10 - 40 % и более
превосходит достигаемую при упаковке в обычный архив.
2. Требуемые ресурсы
-
Для работы RAR необходимы MS DOS 3.0 или более поздние
версии;
-
Для упаковки необходимо 420 Kb оперативной памяти, для
распаковки 320 Kb, для прочих операций 260 Kb, но увеличение этого
значения может повысить скорость работы за счет буферизации дисковых
операций.
Основные возможности
-
Создание архивов форматов RAR и ZIP;
-
Распаковка файлов формата CAB, ARJ, LZH, TAR, GZ, ACE,
UUE, BZ2, JAR, ISO, 7z, Z;
-
Возможность шифрования архивов с использованием алгоритма
AES (Advanced Encryption Standard) с длиной ключа 128 бит, при этом в
качестве ключа шифрования используется хеш пароля с использованием
алгоритма SHA-1;
-
Возможность работы с файлами размером до 8,589 трлн (1012)
гигабайт;
-
Создание самораспаковывающихся, непрерывных и
многотомных архивов;
15
-
Добавление в архивы дополнительной информации для
восстановления архива в случае его повреждения, в том числе создание
специальных томов восстановления, позволяющих восстановить
многотомный архив при повреждении частей с информацией;
-
Полная поддержка файловой системы NTFS и имен файлов в
Юникоде;
-
Поддержка командной строки.
В 2009 году была запущена программа по обучению и сертификации
пользователей WinRAR. Сертификационный экзамен бесплатен, проходит в
форме онлайн-теста и содержит 25 вопросов различной сложности.
Последней версией программы является WinRAR 3.9. Это один из
самых мощных и удобных архиваторов для Windows. Программа позволяет
создавать архивы RAR практически любых размеров, содержащие
неограниченное число файлов, а также поддерживает полноценную работу с
файлами CAB, ARJ, LZH, TAR, GZ, ACE, UUE, BZ2 и JAR.
Архиватор, который умеет работать с большим количеством архивных
форматов. С помощью WinRAR можно не только создавать и распаковывать
архивы, но и в удобном и наглядном виде организовывать их хранение на
компьютере. Интерфейс программы WinRAR быстро и гибко настраивается
под нужды пользователя. При необходимости можно подключить сторонний
антивирус для проверки файлов, с которыми работает WinRAR.
В последней версии представлено огромное количество нововведений.
Среди них:
-
впервые появилась специальная версия архиватора для 64-
битовых систем;
-
ускорено сжатие в RAR на многоядерных и многопроцессорных
системах. Это особенно заметно в среде Windows Vista и Windows 7;
-
внесены изменения в окно распаковки;
-добавлены новые средства для управления командами, добавляемыми
в контекстное меню Windows;
16
-
представлен новый (более логичный) способ сортировки файлов
по именам, который будет удобен для работы с архивами, в названии
которых есть цифры;
-
сочетание клавиш Ctrl+W теперь используется для закрытия окна
WinRAR ;
-
добавлен новый переключатель командной строки -r- для отмены
циклического повторения;
-
добавлен новый переключатель командной строки -ai для
игнорирования атрибутов файлов;
-
при подведении курсора к иконки в трое, указывающей на
процесс сжатия, теперь можно увидеть информацию о названии архива.
WinZIP
WinZip — условно-бесплатный файловый архиватор и компрессор для
Microsoft Windows фирмы Corel. PKZIP является основным форматом, хотя
поддерживаются и другие архивные форматы.
Рис. 3.5. Окно архиватора WinZip
Возможности
-
Создание, дополнение, извлечение из архивов ZIP, а также
собственного формата .zip;
17
- Поддержка алгоритмов компрессии JPEG, LZMA (12.0), bzip2 (9.0),
PPMd (10.0) и специальных алгоритмов для звуковых файлов (на основе
WavPack), что позволяет уменьшить архив за счёт потенциального
увеличения времени сжатия и извлечения (особенно при использовании
PPMd);
-
Декомпрессия файлов .bz2, .rar, .iso, .img, 7-zip;
-
Встроенная поддержка архивов LHA (.lha и .lzh);
-
Настраиваемая интеграция в оболочку Microsoft Windows;
-
Поддержка 128- и 256-битных ключей шифрования AES. Это
позволило заменить менее надёжный метод шифрования PKZIP 2.0
используемый в ранних версиях. Дополнительные возможности;
-
Прямая запись архивов на CD / DVD;
-
Автоматизация резервного копирования;
-
Поддержка протокола FTP;
-
Отправка ZIP архивов по электронной почте;
-
Поддержка Юникода (c версии 11.2).
Ключи и команды архиватора ZIP.
Существует два основных файла программы:
1.
PKZIP- программа, помещающая файлы в архив;
2.
PKUNZIP- программа, извлекающая файлы из архива.
Помещение файлов в архив.
При помещении файла в архив используется следующий формат:
PKZIP режимы, имя архива (имена файлов).
Режимы - указываются с предшествующим знаком “-” или “/”, они
задают или уточняют требуемые от программы архивации действия.
Имена файлов - задают файлы, включаемые в архив. При задании имен
файлов можно использовать символы * и ?. Если имена файлов не заданы, то
подразумевается все файлы из текущего каталога.
Примечание: символ * - определяет, что будут использованы любые
элементы в том месте, где стоит звездочка.
18
После ввода команды программы-упаковщики начинают выполнять
запрошенные действия. На экране изображаются имена помещаемых в архив
файлов. При сжатии каждого файла выводиться процент обработанной части
файла. После окончания сжатия каждого файла напротив его имени
сообщается о степени сжатия. Например, при упаковке файла *.exe на экране
появляется надпись:
Adding: *.EXE Deflating (36%).
Задание степени сжатия.
По умолчанию программа PKZIP обеспечивает достаточно большую
скорость работы и близкую к максимальной степень сжатия. Но, при
желании, можно получить максимальную (на несколько процентов большую)
или наименьшую (быструю) степень сжатия. С ключом максимальной
степени сжатия программа работает медленнее обычной, а при ключе
наименьшей степени сжатия файлов наоборот, быстрее.
Ключи:
-
“-ex” – максимальная степень;
-
“-en” – средняя (обычная) степень;
-
“-es” – наименьшая степень;
Режимы выбора архивируемых файлов.
Программа PKZIP имеет три основных режима помещения файлов в
архив:
-
Add – добавление в архив всех файлов;
-
Update – добавление в архив новых файлов;
-
Freshen – добавление новых версий имеющихся в архиве
файлов.
Извлечение файлов из архива
Для извлечения файлов из архивов, созданных программой PKZIP,
используется программа PKUNZIP.
Программа PKUNZIP имеет следующий формат вызова:
KUNZIP режимы; имя архива (имена файлов).
19
После ввода команды программы архивации начинают извлечение
файлов из архива. На экране изображаются имена извлекаемых из архива
файлов.
Восстановление поврежденных архивов
Хранение информации в архиве более надежно из-за того, что данные
хранятся в сжатом виде, меньше вероятность их случайного повреждения,
например из-за дефектов магнитного покрытия диска.
Но в некоторых случаях архивные файлы с большой вероятностью
могут быть повреждены.
Если программы PKZIP или PKUNZIP обнаруживают, что оглавление
архива повреждено, они выводят на экран сообщение: имя-архива: Error in
ZIP, use PKZipFix (ошибка в архиве, используйте программу PKZipFix).
Формат вызова: PKZIPFIX имя-архивного-файла.
Эта программа создает в текущем каталоге архивный файл
PKFIXED.ZIP, содержащий всю информацию, которую удалось восстановить
из исходного архивного файла.
Версии
Наиболее популярными являются следующие выпуски WinZip 11.2:
Standard и Pro.
WinZip 11.2 это обновленная версия последнего основного выпуска,
WinZip 11.0, с поддержкой Windows Vista.
Возможности WinZip 11.2 включают представление изображений в
виде пиктограмм и автоматический выбор метода сжатия, а также
улучшенное сжатие аудиофайлов (WAV) и поддержку открытия BZ2 и RARфайлов.
В WinZip 11.2 Pro дополнительно доступна функция расширенного
резервирования и новое встроенное средство просмотра изображений, с
помощью которого можно просматривать несколько изображений в Zipфайле.
20
Профессиональная версия архиватора позволяет также производить
запись архивов на CD непосредственно из программы, выполнять задания по
расписанию и имеет поддержку командной строки.
Среди нововведений последних версий можно выделить:
1.
Улучшения в сжатии файлов JPEG;
2.
Специальный мастер для переноса фотографий с камеры и
сжатия их (для этого фотоаппарат должен поддерживать Windows Image
Acquisition Technology);
3.
Встроенный проводник WinZip Explorer с поддержкой эскизов
изображений;
4.
Улучшенная функция отправки изображений по почте из WinZip;
5.
Новый метод сжатия LZMA;
6.
Поддержка форматов 7Z (чтение и извлечение файлов), .IMG,
7.
Расширенные функции, касающиеся установки паролей на
.ISO;
архивы;
8.
Возможность выбора методов шифрования, которые будут
доступны пользователю. Выбрать доступные методы администраторы могут
в процессе установки программы;
9.
Улучшения в интерфейсе.
Одной из последних версий архиватора является версия. WinZip
Professional 14.0 Build. Оригинальная и наиболее популярная среди
пользователей операционной системы Windows программа для сжатия и
распаковки файлов WinZip Professional представляет собой мощный
инструмент, который быстро работает с файлами, экономит свободное место
на диске и уменьшает длительность передачи электронной почты.
Пакет WinZip предлагает новую технологию сжатия, которая делает
размер Zip-файлов еще меньше. Новое оформление окна в стиле Проводника
облегчает работу со сложными Zip-файлами, содержащими множество папок.
21
С помощью этой программы можно экономить пространство на диске,
уменьшаете размер вложений в электронных письмах и эффективно
архивируете свои документы. Наиболее важные данные можно зашифровать
с использованием алгоритма AES. Удобный в использовании, интуитивно
понятный интерфейс - для начинающих пользователей есть интуитивно
понятный мастер WinZip Wizard, а для более опытных пользователей всегда
доступен всемирно известный интерфейс WinZip Classic.
Предлагает новую передовую технологию сжатия, которая уменьшает
размер Zip-файлов, и новый интерфейс в стиле Проводника, облегчающий
навигацию, редактирование и извлечение файлов из архива. Среди прочих
отличий: Возможность разделять Zip-файлы (создание многотомных архивов)
при сжатии, автоматическая проверка обновлений, а также поддержка
диспетчера вложений Attachment Manager из состава операционной системы
Windows XP SP2.
22
4.АРХИТЕКТУРА ПРИЛОЖЕНИЯ
Кроме общего функционала для работы с файлами Java
предоставляет функциональность для работы с таким видом файлов как zipархивы. Для этого в пакете java.util.zip определены два класса ZipInputStream и ZipOutputStream
В Java библиотека IO API находится в пакете java.io и для того чтобы
начать использовать IO достаточно импортировать данную библиотеку в ваш
класс
А пакет java.awt.event предоставляет интерфейсы и классы для
обработки различных типов событий, запускаемых компонентами AWT.
FileFilter- это абстрактный класс, используемый JFileChooser для
фильтрации набора файлов, показываемых пользователю.
FileNameExtensionFilterРеализацию, которая фильтрует с использованием
расширения имени файла.
23
ЗАКЛЮЧЕНИЕ
В процессе написания курсовой работы было собрано большое
количество по теме компрессия данных, разобрано несколько реализаций
различных алгоритмов сжатия данных, написана программа-архиватор.
В итоге получили готовый программный продукт, соответствующий
теме курсовой работы «Разработка архиватора».
Все цели и задачи поставленные в работе были выполнены.
24
Список литературых источников
1. Атенсио, Л Функциональное программирование на JavaScript: как
улучшить код JavaScript-программ / Л Атенсио. - М.: Диалектика, 2018.
- 304 c.
2. Эмерик, Ч. Программирование в Clojure: Практика применения Lisp ы
мире Java / Ч. Эмерик. - М.: ДМК, 2015. - 816 c.
3. Машнин, Т.С. Web-сервисы Java. Профессиональное
программирование / Т.С. Машнин. - СПб.: BHV, 2012. - 560 c.
4. Герман, О.В. Программирование на Java и C# / О.В. Герман. - СПб.:
BHV, 2012. - 512 c.
5. Васильев, А.Н. Программирование на Java для начинающих / А.Н.
Васильев. - М.: Эксмо, 2014. - 416 c.
6. Васильев, А. Java. Объектно-ориентированное программирование:
Учебное пособиеСтандарт третьего поколения / А. Васильев. - СПб.:
Питер, 2013. - 400 c.
7. Соломон, М. Oracle Программирование на языке Java / М. Соломон. М.: Лори, 2010. - 484 c.
8. Дашнер, С. Изучаем Java EE. Современное программирование для
больших предприятий / С. Дашнер. - СПб.: Питер, 2015. - 94 c.
25
ЛИСТИНГ ПРОГРАММНОГО КОДА
ПРИЛОЖЕНИЕ А
package common.dialog;
// Список использованных
import javax.swing.*;
апкетов
import javax.swing.filechooser.FileFilter;
// import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.event.*;
import java.io.*;
import java.util.zip.*;
public class JFileChooserTest extends JFrame
{
public static final long serialVersionUID = 1L;
private
JButton
btnOpenDir
public
JFileChooser fileChooser
= null;
= null;
public JFileChooserTest() {
super("Архиватор UZ/BY");
setDefaultCloseOperation(EXIT_ON_CLOSE);
System.out.println("ПРОГРАММА "+ " " + "ЗАПУЩЕНА" );//Записывает
информацию на консоль
btnOpenDir = new JButton("Открыть директорию");// Кнопка создания
диалогового окна для выбора директории
// Создание экземпляра JFileChooser
fileChooser = new JFileChooser();
// Подключение слушателей к кнопкам
addFileChooserListeners();
// Размещение кнопок в интерфейсе
JPanel contents = new JPanel();
contents.add(btnOpenDir
);
setContentPane(contents);
// Вывод окна на экран
setSize(660, 310);
setVisible(true);
}
public void addFileChooserListeners()
{
btnOpenDir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileChooser.setDialogTitle("Выбор директории");
// Определение режима - только каталог
26
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int result = fileChooser.showOpenDialog(JFileChooserTest.this);
// Если директория выбрана, покажем ее в сообщении
if (result == JFileChooser.APPROVE_OPTION ){
System.out.println("Адрес файла выбран" + " " +
fileChooser.getSelectedFile());//Записывает информацию на консоль + имя файла
File filename = (fileChooser.getSelectedFile());
System.out.println("Заархивированный файл" + " "
+filename.getName());//Записывает информацию на консоль + имя файла
JOptionPane.showMessageDialog(JFileChooserTest.this,
"Заархивирован" + " " +filename.getName());
//Окна вывода сообщений + имя файла
FileFilter filformat = (fileChooser.getFileFilter());
try(ZipOutputStream zout = new ZipOutputStream(new
FileOutputStream("C:\\Users\\aUs\\Desktop\\ousasr.zip"));
//адрес(путь) ZIP архива + имя файла
FileInputStream fis= new FileInputStream(filename);)
{
ZipEntry entry1=new ZipEntry(filename.getName());
zout.putNextEntry(entry1);
// считываем содержимое файла в массив byte
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
// добавляем содержимое к архиву
zout.write(buffer);
// закрываем текущую запись для новой записи
zout.closeEntry();
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
}
});
}
public static void main(String[] args)
{
// Локализация компонентов окна JFileChooser
UIManager.put("FileChooser.saveButtonText"
, "Сохранить"
UIManager.put("FileChooser.openButtonText"
, "Открыть"
UIManager.put("FileChooser.cancelButtonText"
, "Отмена"
UIManager.put("FileChooser.fileNameLabelText"
, "Наименование файла"
);
);
);
27
);
UIManager.put("FileChooser.filesOfTypeLabelText", "Типы файлов"
);
UIManager.put("FileChooser.lookInLabelText"
, "Директория"
);
UIManager.put("FileChooser.saveInLabelText"
, "Сохранить в
директории");
UIManager.put("FileChooser.folderNameLabelText" , "Путь директории"
);
new JFileChooserTest();
}
}
Второй код
package common.dialog;
// ==========================================
// Белорусский государственный университет информатики и радиоэлектроники
// ==========================================
import java.io.*;
import java.util.*;
import java.util.zip.*;
public class Program
{
public static void main(String args[])
{
String szZipFilePath;
String szExtractPath;
int i;
System.out.println(
"Введите полный путь к Zip-файлу:");
szZipFilePath = new String(getKbdString());
File f = new File(szZipFilePath);
if(!f.exists())
{
System.out.println(
"\nНе найден: " + szZipFilePath);
System.exit(0);
}
if(f.isDirectory())
{
System.out.println(
"\nНет файла:" + szZipFilePath);
System.exit(0);
}
System.out.println(
"Введите путь для извлечения файлов: ");
szExtractPath = new String(getKbdString());
File f1 = new File(szExtractPath);
if(!f1.exists())
{
System.out.println(
"\nНе найден: " + szExtractPath);
System.exit(0);
}
if(!f1.isDirectory())
28
{
System.out.println(
"\nНеверный путь: " + szExtractPath);
System.exit(0);
}
ZipFile zf;
Vector zipEntries = new Vector();
try
{
zf = new ZipFile(szZipFilePath);
Enumeration en = zf.entries();
while(en.hasMoreElements())
{
zipEntries.addElement(
(ZipEntry)en.nextElement());
}
for (i = 0; i < zipEntries.size(); i++)
{
ZipEntry ze =
(ZipEntry)zipEntries.elementAt(i);
extractFromZip(szZipFilePath,
szExtractPath,
ze.getName(), zf, ze);
}
zf.close();
System.out.println("Выполнено!");
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
}
// ============================================
// извлечь
// ============================================
static void extractFromZip(
String szZipFilePath, String szExtractPath,
String szName,
ZipFile zf, ZipEntry ze)
{
if(ze.isDirectory())
return;
String szDstName = slash2sep(szName);
String szEntryDir;
if(szDstName.lastIndexOf(File.separator) != -1)
{
szEntryDir =
szDstName.substring(
0,
szDstName.lastIndexOf(File.separator));
}
else
szEntryDir = "";
29
System.out.print(szDstName);
long nSize = ze.getSize();
long nCompressedSize =
ze.getCompressedSize();
System.out.println(" " + nSize + " (" +
nCompressedSize + ")");
try
{
File newDir = new File(szExtractPath +
File.separator + szEntryDir);
newDir.mkdirs();
FileOutputStream fos =
new FileOutputStream(szExtractPath +
File.separator + szDstName);
InputStream is = zf.getInputStream(ze);
byte[] buf = new byte[1024];
int nLength;
while(true)
{
try
{
nLength = is.read(buf);
}
catch (EOFException ex)
{
break;
}
if(nLength < 0)
break;
fos.write(buf, 0, nLength);
}
is.close();
fos.close();
}
catch(Exception ex)
{
System.out.println(ex.toString());
System.exit(0);
}
}
// ============================================
// slash2sep
// ============================================
static String slash2sep(String src)
{
int i;
char[] chDst = new char[src.length()];
String dst;
for(i = 0; i < src.length(); i++)
{
if(src.charAt(i) == '/')
chDst[i] = File.separatorChar;
else
30
chDst[i] = src.charAt(i);
}
dst = new String(chDst);
return dst;
}
// ============================================
// getKbdString
// ============================================
static public String getKbdString()
{
byte bKbd[] = new byte[256];
int iCnt = 0;
String szStr = "";
try
{
iCnt = System.in.read(bKbd);
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
szStr = new String(bKbd, 0, iCnt);
szStr = szStr.trim();
return szStr;
}
}
31
Download