Алгоритмы Gzip и Zlib обычно используются для сжатия и распаковки файлов. Gzip в основном используется для сжатия отдельных файлов, тогда как Zlib в основном сжимает потоки данных. Алгоритмы используют алгоритм сжатия Deflate для сжатия, хотя Gzip предоставляет дополнительные функции, включая проверку ошибок и метаданные файла.
Gzip обеспечивает лучшую степень сжатия, чем Zlib. Однако Gzip требует большей вычислительной мощности для сжатия и распаковки данных. В большинстве случаев следует использовать Gzip для сжатия файлов и Zlib для сжатия потоков данных.
Go предоставляет функциональность для сжатия данных, в том числе файлов, через компресс упаковка.
Пакет сжатия
компресс пакет поддерживает сжатие данных через сжать/gzip и сжать/zlib пакеты, среди других функций.
gzip пакет поддерживает сжатие и распаковку данных формата файла gzip, включая операции чтения и записи, как указано в
RFC 1952. В то время zlib package помогает сжимать и распаковывать данные в формате zlib.Вы можете импортировать gzip и zlib из компресс пакет с помощью Импортировать ключевое слово.
Импортировать (
"сжать/gzip"// импортируем gzip
"сжать/zlib"// импортируем zlib
)
Сжатие и распаковка файлов с помощью Gzip
Gzip — это формат файлов и программное приложение для сжатия и распаковки файлов. Gzip использует цепной алгоритм Лемпеля-Зива-Маркова (LZ77) для сжатия данных, и этот алгоритм часто используется для сжатия текстовых файлов, таких как файлы HTML, CSS или JavaScript.
Процесс сжатия файлов с помощью gzip пакет простой и интуитивно понятный. Вам нужно будет открыть файл, создать сжатый файл, создать модуль записи gzip и скопировать исходный файл. содержимое файла в модуль записи gzip перед операцией сброса, которая гарантирует, что процесс записи полный.
Запустите это баш-команда в терминале вашего рабочего каталога в системах Unix, чтобы создать образец текстового файла, а затем вставить текст в файл.
// создает текстовый файл.
пример прикосновения.txt
// передаем строку в файл
эхо 'Привет, мир!' > пример.txt}
После создания файла и вставки текста вы можете импортировать gzip, ио, и Операционные системы пакеты для операции сжатия.
Вот как вы можете использовать сжать/gzip package для сжатия текстового файла.
Импортировать (
"сжать/gzip"
"ио"
"Операционные системы"
)функцияосновной() {
// Открываем исходный файл
исходный файл, ошибка := os. Открыть("пример.txt")
если ошибся != ноль {
паника(ошибка)
}
отложить исходный файл. Закрывать()// Создаем новый gzip-файл
gzipFile, ошибка := os. Создавать("пример.txt.gz")
если ошибся != ноль {
паника(ошибка)
}
отложить сжатый файл. Закрывать()// Создаем новый модуль записи gzip
gzipWriter := gzip. NewWriter (gzipFile)
отложить gzipWriter. Закрывать()// Копируем содержимое исходного файла в модуль записи gzip
_, ошибка = io. Копировать (gzipWriter, originalFile)
если ошибся != ноль {
паника(ошибка)
}
// Сбросить модуль записи gzip, чтобы убедиться, что все данные записаны
gzipWriter. Румянец()
}
Открыть функция Операционные системы package открывает текстовый файл, а Закрывать функция закрывает файл с отложить заявление. Создавать функция создает gzip-файл, а НовыйПисатель функция gzip package записывает содержимое текстового файла в файл gzip, используя Копировать функция ио упаковка.
Румянец метод gzipWriter Экземпляр сбрасывает модуль записи gzip, как только все данные доступны в заархивированном файле.
Вы можете извлечь исходный файл из файла, сжатого с помощью gzip, с помощью процесса распаковки. Процесс распаковки файла аналогичен; вы откроете файл и создадите программу чтения файлов gzip, а затем создадите новый файл для хранения несжатых данных перед копированием содержимого в новый файл.
Импортировать (
"сжать/gzip"
"ио"
"Операционные системы"
)функцияосновной() {
// Открытие сжатого файла
gzipFile, ошибка := os. Открыть("пример.txt.gz")
если ошибся != ноль {
паника(ошибка)
}
отложить сжатый файл. Закрывать()// Создаем новую программу чтения gzip
gzipReader, ошибка := gzip. NewReader (gzipFile)
отложить gzipReader. Закрывать()// Создаем новый файл для хранения несжатых данных
несжатый файл, ошибка := os. Создавать("пример.txt")
если ошибся != ноль {
паника(ошибка)
}
отложить несжатый файл. Закрывать()
// Копируем содержимое gzip-ридера в новый файл
_, ошибка = io. Копировать (несжатый файл, gzipReader)
если ошибся != ноль {
паника(ошибка)
}
}
Открыть функция Операционные системы package открывает сжатый файл, и НовыйЧитатель функция gzip package читает заархивированный файл. Создавать функция Операционные системы package создает новый текстовый файл. Копировать функция копирует содержимое gzipReader к несжатый файл.
Сжатие и распаковка данных с помощью Zlib
Zlib — библиотека для сжатия и распаковки данных; библиотека также использует алгоритм LZ77. Zlib написан на C и широко используется в качестве основы для других библиотек сжатия и программного обеспечения. В отличие от gzip, zlib это библиотека и zlib не включает формат файла. Однако он часто используется для сжатия данных, хранящихся в контейнерных форматах, таких как PNG или HTTP.
Процесс сжатия с помощью zlib такой же, как и для gzip. Вы создадите файл zlib, настроите модуль записи, откроете исходный файл и скопируете содержимое в сжатый файл.
Импортировать (
"сжать/zlib"
"ио"
"Операционные системы"
)функцияосновной() {
// Создаем новый файл "example.zlib"
файл, ошибка := os. Создавать("пример.zlib")
// Если возникает ошибка, паникуем и останавливаем программу
если ошибся != ноль {
паника(ошибка)
}
// Убедитесь, что файл закрыт после возврата из функции
отложить файл. Закрывать()// Создаем новый модуль записи zlib с лучшим уровнем сжатия
писатель, ошибся := zlib. NewWriterLevel (файл, zlib. Лучшее сжатие)
// Если возникает ошибка, паникуем и останавливаем программу
если ошибся != ноль {
паника(ошибка)
}
// Убедитесь, что модуль записи закрыт после возврата из функции
отложить писатель. Закрывать()// Открываем входной файл "example.txt"
inputFile, ошибка := os. Открыть("пример.txt")
// Если возникает ошибка, паникуем и останавливаем программу
если ошибся != ноль {
паника(ошибка)
}
// Убедитесь, что входной файл закрыт после возврата из функции
отложить входной файл. Закрывать()
// Копируем содержимое входного файла в модуль записи
ио. Копировать (запись, inputFile)
}
Создавать метод создает файл zlib, а NewWriterLevel функция создает средство записи для файла с указанной опцией (в данном случае Лучшее сжатие вариант). Открыть метод Операционные системы package открывает текстовый файл, а Копировать функция ио package копирует содержимое текстового файла в файл zlib в процессе сжатия.
Чтобы распаковать файл zlib, вам нужно открыть сжатый файл, создать новую программу чтения zlib, а затем, наконец, скопировать содержимое программы чтения в стандартный вывод.
Импортировать (
"сжать/zlib"
"ио"
"Операционные системы"
)функцияосновной() {
// Открываем сжатый файл "compressed_file.zlib"
файл, ошибка := os. Открыть("сжатый_файл.zlib")
// Если возникает ошибка, паникуем и останавливаем программу
если ошибся != ноль {
паника(ошибка)
}
// Убедитесь, что файл закрыт после возврата из функции
отложить файл. Закрывать()// Создаем новую программу чтения zlib для сжатого файла
читатель, ошибся := zlib. NewReader (файл)
// Если возникает ошибка, паникуем и останавливаем программу
если ошибся != ноль {
паника(ошибка)
}
// Убедитесь, что считыватель закрыт после возврата из функции
отложить читатель. Закрывать()
// Копируем содержимое считывателя в стандартный вывод
ио. Копировать (ос. Стадаут, читатель)
}
Основная функция открывает файл zlib с Операционные системы пакет Открыть функция, и НовыйЧитатель функция zlib package считывает файл zlib в экземпляр читателя. Копировать метод ио package копирует содержимое из читалки на стандартный вывод (в данном случае на консоль).
Написание кода для сжатия файлов удобно для автоматизации задач и сжатия нескольких файлов. Если вам нужно сжать всего несколько файлов, вы можете прибегнуть к помощи таких приложений, как WinRar, WinZip, Express Zip и Bandizip.