情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsで読み込みストリームの使用と同時にエラー処理を追加する

読み込みストリームを使用する場合にはエラー処理は自分で行わなければなりません。

読み込みストリームの使用と同時にエラー処理を追加するにはstream-eachモジュールのstreamEach関数を使用します。

var streamEach = require('stream-each');

streamEach(readable, function (chunk, callback) {
    callback(null);
    //or
    callback(err);
}, function (err) {
});

第1引数に読み込みストリームを指定します。

第2引数に読み込みストリームのデータに対する処理を関数として指定します。この関数の第1引数はデータであり、第2引数はコールバック関数です。

処理が完了した場合や処理の実行中にエラーが発生した場合には必ずこのコールバック関数を呼び出さなければなりません。

このコールバック関数の第1引数にはエラーオブジェクト(エラーが発生しなかった場合にはnull)を指定します。

第3引数にストリームが閉じられた時に呼び出される関数を指定します。この関数の第1引数はエラーオブジェクトです。

サンプルコード1

3つ目のコマンドライン引数として与えられたテキストファイルのデータをストリームを使用して読み込み、標準出力に出力します。

stream-each.js

var fs = require('fs');
var streamEach = require('stream-each');

if (process.argv.length < 3) {
    console.error('lack argument.');
    process.exit(1);
}

try {
    var rs = fs.createReadStream(process.argv[2], 'utf-8');
    streamEach(rs, function (chunk, callback) {
        console.log(chunk);
        callback(null);
    }, function (err) {
        if (err) {
            console.error(err);
            process.exit(1);
        }
    });
}
catch (err) {
    console.error(err);
    process.exit(1);
}

使用パッケージ

  • stream-each
    npm install stream-eachでインストールします。

実行結果

現在のフォルダにはtextfile.txtという名称のテキストファイルが存在しています(文字コードはUTF-8です)。

C:\work\node>type textfile.txt
これはテキストファイルの内容です。

このテキストファイルを3つ目のコマンドライン引数に指定してコードを実行すると正しく内容が出力されます。

C:\work\node>node stream-each.js textfile.txt
これはテキストファイルの内容です。

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js