Zlib


稳定性: 2 - 稳定的

\Stability: 2 - Stable

源代码: lib/zlib.js

node:zlib 模块提供使用 Gzip、Deflate/Inflate、Brotli 和 Zstd 实现的压缩功能。

\The node:zlib module provides compression functionality implemented using Gzip, Deflate/Inflate, Brotli, and Zstd.

要访问它:

\To access it:

import zlib from 'node:zlib';const zlib = require('node:zlib');

压缩和解压缩是围绕 Node.js 流 API 构建的。

\Compression and decompression are built around the Node.js Streams API.

压缩或解压缩流(例如文件)可以通过将源流通过 zlib Transform 流管道传输到目标流来完成:

\Compressing or decompressing a stream (such as a file) can be accomplished by piping the source stream through a zlib Transform stream into a destination stream:

import {
 createReadStream,
 createWriteStream,
} from 'node:fs';
import process from 'node:process';
import { createGzip } from 'node:zlib';
import { pipeline } from 'node:stream';
const gzip = createGzip();
const source = createReadStream('input.txt');
const destination = createWriteStream('input.txt.gz');
pipeline(source, gzip, destination, (err) => {
 if (err) {
 console.error('An error occurred:', err);
 process.exitCode = 1;
 }
});const {
 createReadStream,
 createWriteStream,
} = require('node:fs');
const process = require('node:process');
const { createGzip } = require('node:zlib');
const { pipeline } = require('node:stream');
const gzip = createGzip();
const source = createReadStream('input.txt');
const destination = createWriteStream('input.txt.gz');
pipeline(source, gzip, destination, (err) => {
 if (err) {
 console.error('An error occurred:', err);
 process.exitCode = 1;
 }
});

或者,使用 promise pipeline API:

\Or, using the promise pipeline API:

import {
 createReadStream,
 createWriteStream,
} from 'node:fs';
import { createGzip } from 'node:zlib';
import { pipeline } from 'node:stream/promises';
async function do_gzip(input, output) {
 const gzip = createGzip();
 const source = createReadStream(input);
 const destination = createWriteStream(output);
 await pipeline(source, gzip, destination);
}
await do_gzip('input.txt', 'input.txt.gz');const {
 createReadStream,
 createWriteStream,
} = require('node:fs');
const process = require('node:process');
const { createGzip } = require('node:zlib');
const { pipeline } = require('node:stream/promises');
async function do_gzip(input, output) {
 const gzip = createGzip();
 const source = createReadStream(input);
 const destination = createWriteStream(output);
 await pipeline(source, gzip, destination);
}
do_gzip('input.txt', 'input.txt.gz')
 .catch((err) => {
 console.error('An error occurred:', err);
 process.exitCode = 1;
 });

也可以一步压缩或解压缩数据:

\It is also possible to compress or decompress data in a single step:

import process from 'node:process';
import { Buffer } from 'node:buffer';
import { deflate, unzip } from 'node:zlib';
const input = '.................................';
deflate(input, (err, buffer) => {
 if (err) {
 console.error('An error occurred:', err);
 process.exitCode = 1;
 }
 console.log(buffer.toString('base64'));
});
const buffer = Buffer.from('eJzT0yMAAGTvBe8=', 'base64');
unzip(buffer, (err, buffer) => {
 if (err) {
 console.error('An error occurred:', err);
 process.exitCode = 1;
 }
 console.log(buffer.toString());
});
// Or, Promisified
import { promisify } from 'node:util';
const do_unzip = promisify(unzip);
const unzippedBuffer = await do_unzip(buffer);
console.log(unzippedBuffer.toString());const { deflate, unzip } = require('node:zlib');
const input = '.................................';
deflate(input, (err, buffer) => {
 if (err) {
 console.error('An error occurred:', err);
 process.exitCode = 1;
 }
 console.log(buffer.toString('base64'));
});
const buffer = Buffer.from('eJzT0yMAAGTvBe8=', 'base64');
unzip(buffer, (err, buffer) => {
 if (err) {
 console.error('An error occurred:', err);
 process.exitCode = 1;
 }
 console.log(buffer.toString());
});
// Or, Promisified
const { promisify } = require('node:util');
const do_unzip = promisify(unzip);
do_unzip(buffer)
 .then((buf) => console.log(buf.toString()))
 .catch((err) => {
 console.error('An error occurred:', err);
 process.exitCode = 1;
 });

AltStyle によって変換されたページ (->オリジナル) /