情報アイランド

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

Node.jsで読み込みストリームと書き込みストリームから読み書きストリームを作成する

読み込みストリームと書き込みストリームから読み書きストリームを作成するにはduplexifyモジュールのduplexify関数を使用します。

var duplexify = require('duplexify');

var duplex = duplexify(writable, readable);

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

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

返り値として読み書きストリームが得られます。

サンプルコード1

3つ目のコマンドライン引数として与えられたテキストファイルのデータを読み込み、4つ目のコマンドライン引数として与えられたテキストファイルにデータを書き込む読み書きストリームを作成します。

duplexify.js

var fs = require('fs');
var duplexify = require('duplexify');

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

var duplex = duplexify(fs.createWriteStream(process.argv[3], 'utf-8'), fs.createReadStream(process.argv[2], 'utf-8'));
duplex.setEncoding('utf-8');
duplex.on('error', function (err) {
    console.error(err);
    process.exit(1);
});
duplex.on('data', function (data) {
    console.log(data);
});
duplex.write('this ');
duplex.write('is ');
duplex.write('a ');
duplex.write('pen.');
duplex.end();

使用パッケージ

  • duplexify
    npm install duplexifyでインストールします。

実行結果

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

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

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

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

また、textfile2.txtという名称のテキストファイルが作成されます。

C:\work\node>type textfile2.txt
this is a pen.

関連

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

-Node.js