Реализация алгоритма сжатия LZW в Java.
LZW-это алгоритм сжатия, созданный в 1984 году Авраамом Лемпелем, Джейкобом Зивом и Терри Уэлчем. Кодовые организации с переменной шириной могут использоваться для увеличения размера вывода кодовых слов, поскольку словарь заполняется.
Этот проект представляет собой модификацию алгоритма сжатия LZW для использования кодовых организаций ширины переменной и для необязательного сброса кодовой книги при определенных условиях. С этими изменениями в руке я сравнил производительность модифицированного кода LZW с кодом LZW в учебнике курса, а также с производительностью широко используемого приложения сжатия.
Скомпилируйте программу, управляя javac MyLZW.java .
Есть 3 режима для запуска этого проекта:
LZW.java ). Какой режим должен быть использован программой во время сжатия. Какой бы режим использовался для сжатия файла, также следует использовать для расширения файла. Пользователь не обязан указывать режим для использования для расширения. Режим, используемый для сжатия файла, будет сохранен в начале выходного файла, так что он может быть автоматически извлечен во время расширения. Чтобы установить режим, который будет использоваться во время сжатия, программа примет 3 аргументы командной строки:
* "n" для ничего не делать
* "R" для режима сброса
* "M" для режима монитора
Обратите внимание, что предоставленный код LZW уже принимает аргумент командной строки, чтобы определить, следует ли выполнять сжатие или расширение («-» и «+», соответственно), и что ввод/выходные файлы предоставляются с помощью стандартного перенаправления ввода/вывода («<», чтобы указать входной файл и «>», чтобы указать выходной файл). Чтобы сжать файл foo.txt для генерации foo.lzw с помощью режима сброса, вы сможете запустить:
java MyLZW - r < foo.txt > foo.lzw аналогично, чтобы расширить foo.lzw в foo2.txt, вы должны запустить:
java MyLZW + < foo.lzw > foo2.txt