🦕
【Deno】Compression Streams APIを使ってgzipを圧縮・展開する
はじめに
Deno 環境でファイルを Compression Streams API を使用して、gzip 圧縮・展開する方法を紹介します。
Compression Streams API とは
Compression Streams API は、gzip 形式や deflate 形式データの圧縮や展開を行う JavaScript の API です。
Deno にはこの Comporession Streams API が標準で実装されている(v1.45.2
現在)ため、Deno 環境下では簡単に gzip の圧縮・展開が可能です。
方法
環境
本プログラムの実行環境は以下の通りです。
- Deno
v1.45.2
- TypeScript
gzip 圧縮
const file = await Deno.open("test.txt");
const outputFile = await Deno.open("test.txt.gz", {
write: true,
create: true,
});
await file.readable
.pipeThrough(new CompressionStream("gzip"))
.pipeTo(outputFile.writable);
流れとしては以下の通りです。
- ファイルのデータ読み込み
-
new CompressionStream("gip")
でデータストリームを gzip 圧縮 - 圧縮したデータストリームをパイプしてファイルに書き込む
gzip 展開
const file = await Deno.open("test.txt.gz");
const outputFile = await Deno.open("test-gzip.txt", {
write: true,
create: true,
});
file.readable
.pipeThrough(new DecompressionStream("gzip"))
.pipeTo(outputFile.writable);
流れとしては以下の通りです。
- ファイルのデータ読み込み
-
new DecompressionStream("gip")
でデータストリームを gzip 展開 - 展開したデータストリームをパイプしてファイルに書き込む
Discussion