Модуль злиб
zlib — это встроенный модуль сжатия, который поддерживает несколько форматов и режимов сжатия, таких как gzip, deflate и zlib.
zlib в основном состоит из следующих трех функций:
- дефляция: сжатые данные;
- надуть: распаковать данные;
- gzip: формат сжатия gzip.
Прежде чем использовать zlib, вам необходимо выбрать один из них в соответствии с алгоритмом сжатия, который вам нужно использовать. Вы можете обратиться к константам zlib, чтобы выбрать соответствующий алгоритм сжатия. Например, для описания модуля мы используем алгоритм сжатия deflate:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15const zlib = require('zlib');
const {
NO_COMPRESSION,
BEST_SPEED,
BEST_COMPRESSION,
DEFAULT_COMPRESSION
} = require('zlib');
// compress data
const deflated = zlib.deflate('hello, world', BEST_SPEED);
console.log(deflated.toString());
// decompress data
const inflated = zlib.inflate(deflated);
console.log(inflated.toString());
Приведенный выше код показывает, как сжимать и распаковывать данные. Сначала используйте zlib.deflate
метод для сжатия hello, world
строки и передайте его BEST_SPEED
в качестве параметра уровня сжатия, а затем используйте zlib.inflate
метод для распаковки данных. Результат вывода должен быть таким же, как исходная строка. .
zlib.deflate
Оба zlib.inflate
поддерживают определение уровня сжатия.Уровень сжатия представляет собой число в диапазоне значений.Значение [NO_COMPRESSION, BEST_SPEED, DEFAULT_COMPRESSION, BEST_COMPRESSION]
по умолчанию — DEFAULT_COMPRESSION
. Значение этих четырех уровней сжатия можно узнать из следующей таблицы:
Уровень сжатия | Значение |
---|---|
zlib.NO_COMPRESSION | Несжатые данные (с поддержкой завершения заголовка сжатия) |
zlib.BEST_SPEED | Самая высокая скорость сжатия; но степень сжатия соответственно хуже. |
zlib.DEFAULT_COMPRESSION | Согласно значению алгоритма сжатия по умолчанию, он обычно медленнее, чем BEST_SPEED, но имеет более высокую степень сжатия. |
zlib.BEST_COMPRESSION | Самая высокая степень сжатия, но, соответственно, более медленная скорость сжатия. |
При использовании модуля zlib
следует отметить , что если вы хотите одновременно сжимать и распаковывать данные, рекомендуется deflate
сначала использовать его для сжатия данных, а затем использовать его inflate
для распаковки данных, чтобы избежать ошибок. Для различных форматов и алгоритмов сжатия существуют другие классы и методы сжатия и распаковки.Вы можете обратиться к следующим документам для использования.
статическая функция
createDeflate
Создайте объект потока сдувания
1static Stream zlib.createDeflate(Stream to);
Параметры звонка:
- to:Stream, поток, используемый для хранения результатов обработки
Результаты возврата:
- Stream, возвращает инкапсулированный объект потока
createDeflateRaw
Создайте объект потока deflateRaw.
1static Stream zlib.createDeflateRaw(Stream to);
Параметры звонка:
- to:Stream, поток, используемый для хранения результатов обработки
Результаты возврата:
- Stream, возвращает инкапсулированный объект потока
createGunzip
Создайте объект потока Gunzip
1
2static Stream zlib.createGunzip(Stream to,
Integer maxSize = -1);
Параметры звонка:
- to:Stream, поток, используемый для хранения результатов обработки
- maxSize: целое число, указывает предел размера распаковки, значение по умолчанию - -1, без ограничений.
Результаты возврата:
- Stream, возвращает инкапсулированный объект потока
createGzip
Создайте объект потока gzip
1static Stream zlib.createGzip(Stream to);
Параметры звонка:
- to:Stream, поток, используемый для хранения результатов обработки
Результаты возврата:
- Stream, возвращает инкапсулированный объект потока
createInflate
Создайте объект потока раздувания
1
2static Stream zlib.createInflate(Stream to,
Integer maxSize = -1);
Параметры звонка:
- to:Stream, поток, используемый для хранения результатов обработки
- maxSize: целое число, указывает предел размера распаковки, значение по умолчанию - -1, без ограничений.
Результаты возврата:
- Stream, возвращает инкапсулированный объект потока
createInflateRaw
Создайте объект потока inflateRaw.
1
2static Stream zlib.createInflateRaw(Stream to,
Integer maxSize = -1);
Параметры звонка:
- to:Stream, поток, используемый для хранения результатов обработки
- maxSize: целое число, указывает предел размера распаковки, значение по умолчанию - -1, без ограничений.
Результаты возврата:
- Stream, возвращает инкапсулированный объект потока
deflate
Использовать алгоритм deflate для сжатия данных (формат zlib)
1
2static Buffer zlib.deflate(Buffer data,
Integer level = DEFAULT_COMPRESSION) async;
Параметры звонка:
- data:Buffer, учитывая данные, подлежащие сжатию
- level: целое число, указывает уровень сжатия, значение по умолчанию — DEFAULT_COMPRESSION.
Результаты возврата:
- Buffer, возвращает сжатые двоичные данные
deflateTo
Используйте алгоритм deflate для сжатия данных в потоковые объекты (формат zlib).
1
2
3static zlib.deflateTo(Buffer data,
Stream stm,
Integer level = DEFAULT_COMPRESSION) async;
Параметры звонка:
- data:Buffer, учитывая данные, подлежащие сжатию
- stm:Stream, указывает поток для хранения сжатых данных
- level: целое число, указывает уровень сжатия, значение по умолчанию — DEFAULT_COMPRESSION.
Используйте алгоритм deflate для сжатия данных в исходном потоке в объект потока (формат zlib).
1
2
3static zlib.deflateTo(Stream src,
Stream stm,
Integer level = DEFAULT_COMPRESSION) async;
Параметры звонка:
- src:Stream, учитывая поток, в котором находятся данные, подлежащие сжатию
- stm:Stream, указывает поток для хранения сжатых данных
- level: целое число, указывает уровень сжатия, значение по умолчанию — DEFAULT_COMPRESSION.
inflate
Распаковка данных, сжатых алгоритмом deflate (формат zlib)
1
2static Buffer zlib.inflate(Buffer data,
Integer maxSize = -1) async;
Параметры звонка:
- data:Buffer, учитывая сжатые данные
- maxSize: целое число, указывает предел размера распаковки, значение по умолчанию - -1, без ограничений.
Результаты возврата:
- Buffer, возвращает распакованные двоичные данные
inflateTo
Распаковать данные, сжатые алгоритмом deflate, в объект потока (формат zlib).
1
2
3static zlib.inflateTo(Buffer data,
Stream stm,
Integer maxSize = -1) async;
Параметры звонка:
- data:Buffer, учитывая данные, подлежащие распаковке
- stm:Stream, укажите поток для хранения распакованных данных
- maxSize: целое число, указывает предел размера распаковки, значение по умолчанию - -1, без ограничений.
Распакуйте данные, сжатые алгоритмом дефляции в исходном потоке, в объект потока (формат zlib).
1
2
3static zlib.inflateTo(Stream src,
Stream stm,
Integer maxSize = -1) async;
Параметры звонка:
- src:Stream, учитывая поток, в котором находятся данные, подлежащие распаковке
- stm:Stream, укажите поток для хранения распакованных данных
- maxSize: целое число, указывает предел размера распаковки, значение по умолчанию - -1, без ограничений.
gzip
Сжатие данных с использованием алгоритма gzip
1static Buffer zlib.gzip(Buffer data) async;
Параметры звонка:
- data:Buffer, учитывая данные, подлежащие сжатию
Результаты возврата:
- Buffer, возвращает сжатые двоичные данные
gzipTo
Используйте алгоритм gzip для сжатия данных в объект потока.
1
2static zlib.gzipTo(Buffer data,
Stream stm) async;
Параметры звонка:
- data:Buffer, учитывая данные, подлежащие сжатию
- stm:Stream, указывает поток для хранения сжатых данных
Используйте алгоритм gzip для сжатия данных исходного потока в объект потока.
1
2static zlib.gzipTo(Stream src,
Stream stm) async;
Параметры звонка:
- src:Stream, учитывая поток, в котором находятся данные, подлежащие сжатию
- stm:Stream, указывает поток для хранения сжатых данных
gunzip
Распаковка данных, сжатых алгоритмом gzip.
1
2static Buffer zlib.gunzip(Buffer data,
Integer maxSize = -1) async;
Параметры звонка:
- data:Buffer, учитывая сжатые данные
- maxSize: целое число, указывает предел размера распаковки, значение по умолчанию - -1, без ограничений.
Результаты возврата:
- Buffer, возвращает распакованные двоичные данные
gunzipTo
Распаковка данных, сжатых алгоритмом gzip, в объект потока.
1
2
3static zlib.gunzipTo(Buffer data,
Stream stm,
Integer maxSize = -1) async;
Параметры звонка:
- data:Buffer, учитывая данные, подлежащие распаковке
- stm:Stream, укажите поток для хранения распакованных данных
- maxSize: целое число, указывает предел размера распаковки, значение по умолчанию - -1, без ограничений.
Распакуйте данные, сжатые алгоритмом gzip, в исходном потоке в объект потока.
1
2
3static zlib.gunzipTo(Stream src,
Stream stm,
Integer maxSize = -1) async;
Параметры звонка:
- src:Stream, учитывая поток, в котором находятся данные, подлежащие распаковке
- stm:Stream, укажите поток для хранения распакованных данных
- maxSize: целое число, указывает предел размера распаковки, значение по умолчанию - -1, без ограничений.
deflateRaw
Сжатие данных с использованием алгоритма выкачивания (deflateRaw)
1
2static Buffer zlib.deflateRaw(Buffer data,
Integer level = DEFAULT_COMPRESSION) async;
Параметры звонка:
- data:Buffer, учитывая данные, подлежащие сжатию
- level: целое число, указывает уровень сжатия, значение по умолчанию — DEFAULT_COMPRESSION.
Результаты возврата:
- Buffer, возвращает сжатые двоичные данные
deflateRawTo
Используйте алгоритм deflate для сжатия данных в потоковые объекты (deflateRaw).
1
2
3static zlib.deflateRawTo(Buffer data,
Stream stm,
Integer level = DEFAULT_COMPRESSION) async;
Параметры звонка:
- data:Buffer, учитывая данные, подлежащие сжатию
- stm:Stream, указывает поток для хранения сжатых данных
- level: целое число, указывает уровень сжатия, значение по умолчанию — DEFAULT_COMPRESSION.
Используйте алгоритм deflate для сжатия данных в исходном потоке в объект потока (deflateRaw).
1
2
3static zlib.deflateRawTo(Stream src,
Stream stm,
Integer level = DEFAULT_COMPRESSION) async;
Параметры звонка:
- src:Stream, учитывая поток, в котором находятся данные, подлежащие сжатию
- stm:Stream, указывает поток для хранения сжатых данных
- level: целое число, указывает уровень сжатия, значение по умолчанию — DEFAULT_COMPRESSION.
inflateRaw
Распаковка данных, сжатых алгоритмом дефляции (inflateRaw).
1
2static Buffer zlib.inflateRaw(Buffer data,
Integer maxSize = -1) async;
Параметры звонка:
- data:Buffer, учитывая сжатые данные
- maxSize: целое число, указывает предел размера распаковки, значение по умолчанию - -1, без ограничений.
Результаты возврата:
- Buffer, возвращает распакованные двоичные данные
inflateRawTo
Распаковать данные, сжатые алгоритмом дефляции, в объект потока (inflateRaw).
1
2
3static zlib.inflateRawTo(Buffer data,
Stream stm,
Integer maxSize = -1) async;
Параметры звонка:
- data:Buffer, учитывая данные, подлежащие распаковке
- stm:Stream, укажите поток для хранения распакованных данных
- maxSize: целое число, указывает предел размера распаковки, значение по умолчанию - -1, без ограничений.
Распаковать данные, сжатые алгоритмом дефляции в исходном потоке, в объект потока (inflateRaw).
1
2
3static zlib.inflateRawTo(Stream src,
Stream stm,
Integer maxSize = -1) async;
Параметры звонка:
- src:Stream, учитывая поток, в котором находятся данные, подлежащие распаковке
- stm:Stream, укажите поток для хранения распакованных данных
- maxSize: целое число, указывает предел размера распаковки, значение по умолчанию - -1, без ограничений.
постоянный
NO_COMPRESSION
уменьшить уровень сжатия, не устанавливать сжатие
1const zlib.NO_COMPRESSION = 0;
BEST_SPEED
снизить уровень сжатия, установить самое быстрое сжатие
1const zlib.BEST_SPEED = 1;
BEST_COMPRESSION
спустить уровень сжатия, установить максимальное сжатие
1const zlib.BEST_COMPRESSION = 9;
DEFAULT_COMPRESSION
снизить уровень сжатия, установить настройки по умолчанию
1const zlib.DEFAULT_COMPRESSION = -1;