Программа реализует кодирование и декодирование файлов по методу Хаффмана. Обработка выполняется побайтово, поэтому программа подходит как для текстовых, так и для бинарных файлов.
src - исходный код программы на Java
input - исходные файлы для контрольной проверки
encoded - каталог для закодированных файлов
decoded - каталог для файлов, восстановленных после декодирования
docs - описание структуры закодированного файла
out - каталог для class-файлов после компиляции
Основные файлы исходного кода:
Main.java - обработка аргументов командной строки
HuffmanArchiver.java - кодирование, декодирование и работа с форматом HUF1
HuffmanNode.java - узел дерева Хаффмана
BitOutputStream.java - побитовая запись данных
BitInputStream.java - побитовое чтение данных
Для сборки проекта используется JDK. Сборка выполняется командой:
build.batПосле успешной сборки создаются:
out\*.class
huffman.jar
Ручная команда компиляции:
javac -encoding UTF-8 -d out src\*.javaОбщий формат запуска:
java -jar huffman.jar encode <исходный_файл> <закодированный_файл>
java -jar huffman.jar decode <закодированный_файл> <восстановленный_файл>Также можно запускать программу без jar-файла:
java -cp out Main encode <исходный_файл> <закодированный_файл>
java -cp out Main decode <закодированный_файл> <восстановленный_файл>Для удобства добавлены командные файлы:
encode.bat input\test1.txt encoded\test1.huff
decode.bat encoded\test1.huff decoded\test1_decoded.txtВ каталоге input подготовлены файлы:
test1.txt - файл из 10 одинаковых символов
test2.txt - файл длиной 20 байт из трех разных символов с частотами 10, 5 и 5
После компиляции программы в качестве бинарного файла для проверки используется:
out\Main.class
Запуск всех проверок:
run_tests.batСкрипт выполняет кодирование, декодирование и побайтовое сравнение исходных и восстановленных файлов.
Описание структуры закодированного файла находится в документе:
docs\Описание_структуры_закодированного_файла_HUF1.pdf