2014/10/22更新

[Node] Node標準のzlibを用いて、GzipとGunzipを行う

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
今日はNode.jsの実装のうち、GzipとGunzipを行う方法についてブログを書きたいと思います。

画像

Special Thanks to https://flic.kr/p/pKMDYV




事前準備

今回はNodeのzlibモジュールを利用するため、npm installは不要です。
GipしたりGunzipしたりするファイルを作成しておきます。
# 圧縮するファイルを作成します
$ echo "こんにちは、@yoheiMuneです" > hello.txt
また、実装を書くJSファイルも用意しておきます。
# プログラムファイルを作成します
$ touch gzip.js
$ touch gunzip.js
これで準備完了です。



Node.jsでGzipする

この章ではNodeでGzipを行う方法を記載します。 以下のような実装でGzipを行うことができます。
// gzip.js
var fs = require('fs');
var zlib = require('zlib');

// ファイルを読み込みます
var content = fs.readFileSync('./hello.txt');

// Gzipを行います
zlib.gzip(content, function (err, binary) {

    // 結果をファイルシステムに書き込みます
    fs.writeFileSync('./hello.txt.gz', binary);
});
これだけでGzipができてしまいます。簡単ですね。 作成したhello.txt.gzをFinder上でダブルクリックすると元のファイルをちゃんと取得することができます。
zlib.gzipという機能があることはすぐに発見できたのですが、その引数に指定するコールバックの内容がなかなか調べられませんでした。 調査スキルをもっと向上させねば!



Node.jsでGunzipする

続いてこの章では、NodeでGunzipを行う方法を記載します。 先ほど作成したhello.txt.gzを解凍したいと思います。
// gunzip.js
var fs = require('fs');
var zlib = require('zlib');

// ファイルを読み込みます
var gzipContent = fs.readFileSync('./hello.txt.gz');

// 解凍します
zlib.gunzip(gzipContent, function (err, binary) {

    // ファイルに出力します
    fs.writeFileSync('./hello2.txt', binary);

    // Node上で解凍結果を文字列として扱う場合には、
    // 文字列への変換を行います
    var string = binary.toString('utf-8');
    console.log(string);
});
Gunzipも簡単ですね。上記プログラムを実行後にFinderを見るとhello2.txtができていて、中身を見る事ができます。



最後に

今回は簡単な内容ですが、NodeJsでの圧縮と解凍についての実装を紹介させて頂きました。 上記のコードはGistにも置いています。 Nodeでの圧縮と解凍について調べるのに少し時間がかかってしまったので、備忘録的に残せればと思いブログに書きました。

本ブログでは、フロントエンドネタを中心に情報発信しています。気になった方はぜひ、本ブログのRSSTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。