Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Алгоритмы Gzip и Zlib обычно используются для сжатия и распаковки файлов. Gzip в основном используется для сжатия отдельных файлов, тогда как Zlib в основном сжимает потоки данных. Алгоритмы используют алгоритм сжатия Deflate для сжатия, хотя Gzip предоставляет дополнительные функции, включая проверку ошибок и метаданные файла.

Gzip обеспечивает лучшую степень сжатия, чем Zlib. Однако Gzip требует большей вычислительной мощности для сжатия и распаковки данных. В большинстве случаев следует использовать Gzip для сжатия файлов и Zlib для сжатия потоков данных.

Go предоставляет функциональность для сжатия данных, в том числе файлов, через компресс упаковка.

Пакет сжатия

компресс пакет поддерживает сжатие данных через сжать/gzip и сжать/zlib пакеты, среди других функций.

gzip пакет поддерживает сжатие и распаковку данных формата файла gzip, включая операции чтения и записи, как указано в

instagram viewer
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.