zlib
zlibモジュールは、JSHアプリケーション用にNode.js形式の圧縮・展開APIを提供します。
gzip、deflate、raw deflate、自動検出によるunzip、同期ヘルパー、コールバック方式の非同期ヘルパー、ストリーム形式の処理に対応しています。
一般的な使用方法は以下のとおりです。
const zlib = require('zlib');同期メソッド
これらのメソッドは、ArrayBufferを返します。
gzipSync()
gzip形式でデータを圧縮します。
gzipSync(data)gunzipSync()
gzipデータを展開します。
gunzipSync(data)deflateSync()
deflate形式でデータを圧縮します。
deflateSync(data)inflateSync()
deflateデータを展開します。
inflateSync(data)deflateRawSync()
raw deflate形式でデータを圧縮します。
deflateRawSync(data)inflateRawSync()
raw deflateデータを展開します。
inflateRawSync(data)unzipSync()
gzipまたはdeflateデータの形式を自動検出して展開します。
unzipSync(data)入力型
圧縮メソッドは、Stringまたはバイナリ入力を受け取ります。
展開メソッドには、圧縮されたバイナリ入力を指定します。
使用例
| |
非同期メソッド
これらのメソッドはコールバック方式です。
gzip(), gunzip(), deflate(), inflate(), deflateRaw(), inflateRaw(), unzip()
構文
gzip(data, callback)
gunzip(data, callback)
deflate(data, callback)
inflate(data, callback)
deflateRaw(data, callback)
inflateRaw(data, callback)
unzip(data, callback)コールバックのシグネチャは以下のとおりです。
(err, result) => {}resultは、ArrayBufferで渡されます。
使用例
| |
ストリーム生成メソッド
このモジュールは、ストリーム形式の圧縮・展開オブジェクトも提供します。
createGzip()createGunzip()createDeflate()createInflate()createDeflateRaw()createInflateRaw()createUnzip()
各ファクトリーは、以下のメンバーを持つzlibストリームオブジェクトを返します。
| メンバー | 説明 |
|---|---|
write(data) | 入力データをストリームに書き込む |
end([data]) | 必要に応じて最後のチャンクを書き込み、ストリームを終了 |
on(event, callback) | data、end、errorイベントのリスナーを登録 |
pipe(dest[, options]) | 出力データを別の書き込み可能な接続先に渡す |
flush() | 対応している場合、保留中の圧縮出力をフラッシュ |
close() | 内部の圧縮・展開オブジェクトを閉じる |
bytesWritten | これまで受け取った入力のバイト数 |
bytesRead | これまで生成した出力のバイト数 |
ストリーミングの例
| |
pipe()
pipe()は、次の接続先に対応しています。
write(chunk)と、省略可能なend()を持つJavaScriptの書き込み先writerとして公開されたネイティブwriterを基盤とするオブジェクト
既定では、pipe()はzlibストリームの終了時に接続先のend()も呼び出します。
この動作は、{ end: false }で無効にできます。
| |
進捗の追跡
ストリームオブジェクトは、実行中のバイトカウンターを提供します。
bytesWritten: 消費した入力の合計バイト数bytesRead: 生成した出力の合計バイト数
カウンターはデータ送出中に継続して更新されるため、dataコールバック内でも確認できます。
| |
constants
このモジュールは、zlib定数をzlib.constantsとしてエクスポートします。
代表的な値:
Z_NO_FLUSH、Z_SYNC_FLUSH、Z_FINISHなどのフラッシュ定数Z_NO_COMPRESSION、Z_BEST_SPEED、Z_BEST_COMPRESSION、Z_DEFAULT_COMPRESSIONなどの圧縮レベル定数Z_OK、Z_STREAM_END、Z_DATA_ERRORなどの状態・戻り値の定数
| |
互換性に関する注意
- APIはNode.jsに似ていますが、Node.jsの
zlibを完全に置き換えるものではありません。 - ストリームの
on()は、data、end、errorのコールバックのみに対応しています。 - 各zlibストリームはイベントの種類ごとにコールバックを1つだけ保存するため、同じイベントに後から登録した
on()が以前のコールバックを置き換えます。 - 非同期ヘルパーはコールバック方式のみで、Promise方式は提供しません。
最終更新日