zip
archive/zipモジュールは、JSHでZIPアーカイブを作成・展開します。
メモリ上のヘルパー、ストリーム形式のAPI、ファイルベースのZipクラスを提供します。
処理方法に合わせて、以下のAPIを選択します。
- アーカイブがメモリ上にある場合は、
zipSync()とunzipSync()を使用します。 - ファイルを読み込んで
.zipファイルに保存する場合や、ディスクに展開する場合は、Zipクラスを使用します。 - イベント駆動で処理する場合は、
createZip()とcreateUnzip()を使用します。
インストール
const zip = require('archive/zip');zipSync()
ZIPアーカイブを同期的に作成します。
構文
zipSync(data)パラメーター
dataString | ArrayBuffer | Uint8Array | Number[] | Object[]
dataが単一の文字列またはバイトバッファーの場合、作成するエントリの既定の名前はdataです。
配列を渡す場合は、各要素を{ name, data }形式のエントリオブジェクトとして扱います。
戻り値
ZIPアーカイブのバイト列を含むArrayBufferを返します。
簡単なテストや、メモリ上でアーカイブを作成してから別の場所に保存する場合に便利です。
使用例
| |
| |
unzipSync()
ZIPアーカイブのバイト列を同期的に展開し、エントリオブジェクトの配列を返します。
構文
unzipSync(buffer)パラメーター
bufferArrayBuffer | Uint8Array | Number[]
戻り値
エントリオブジェクトの配列を返します。
各エントリには、name、data、comment、method、compressedSize、size、isDir、
modifiedフィールドを含む場合があります。
使用例
| |
zip()
ZIP作成機能の、コールバック形式の非同期ラッパーです。
構文
zip(data, callback)コールバックのシグネチャは(err, archive)です。
unzip()
ZIP展開機能の、コールバック形式の非同期ラッパーです。
構文
unzip(buffer, callback)コールバックのシグネチャは(err, entries)です。
ストリームイベントを直接管理せずに、コールバック方式で処理する場合に適しています。
使用例
| |
createZip()
ストリーム形式のZIP writerを作成します。
返されるオブジェクトは、write()でエントリを受け取り、end()が呼び出されると、dataイベントでアーカイブのバイト列を出力します。
このAPIはイベント駆動ですが、Node.jsのファイルストリームのように中間結果を逐次出力せず、end()の時点で処理を完了します。
構文
createZip()createUnzip()
ストリーム形式のZIP readerを作成します。
アーカイブのバイト列をwrite()で渡してからend()を呼び出すと、展開した項目ごとにentryイベントが発生します。
構文
createUnzip()使用例
| |
Zip
Zipは、ZIPアーカイブの作成、保存、読み込み、展開を行うファイル指向のヘルパークラスです。
コンストラクター
new zip.Zip(filePath?)filePathを指定すると、そのファイルからアーカイブを読み込みます。
addFile()
ファイルシステムのファイルを読み込み、アーカイブエントリとして追加します。
addFile(filePath[, entryName])addBuffer()
文字列またはバイトバッファーを、アーカイブエントリとして追加します。
addBuffer(data, entryName[, options])addEntry()
エントリオブジェクトを直接追加します。
addEntry(entry)対応するZIPエントリのフィールドは以下のとおりです。
nameString必須のエントリパスdataString | ArrayBuffer | Uint8Array | Number[]ファイルの内容commentStringエントリの説明methodNumber圧縮方式
addFile()は、ディスク上にあるファイルをまとめる最も簡単な方法です。
addBuffer()は、メモリ上で生成した内容を直接追加する場合に適しています。
addEntry()は、commentなどのエントリのメタデータも指定する場合に便利です。
getEntries()
現在のアーカイブエントリの浅いコピーを返します。
getEntries()writeTo()
アーカイブをファイルに保存します。
writeTo(filePath)extractAllTo()
エントリをディレクトリに展開します。
extractAllTo(outputDir[, overwrite])
extractAllTo(outputDir, options)
extractAllTo(outputDir, overwrite, options)optionsは、以下の値に対応しています。
overwriteBooleantrueの場合、既存のファイルを上書きします。filterFunction | RegExp | String | String[]展開するエントリを選択します。
使用例
| |
使用例: ファイルをまとめて再展開する
| |
使用例: 条件付きの展開
| |
注意
filterには、コールバック、RegExp、文字列、エントリ名の配列を使用できます。extractAllTo()は、対象ファイルが存在し、overwriteがfalseの場合にエラーを発生させます。- ZIPエントリのメタデータには、
comment、method、compressedSize、sizeを含む場合があります。 - ZIPエントリは、TARの
symlinkやlinknameのようなリンクメタデータには対応していません。