Node.jsプログラミング界隈には、
「ストリームを制する者はNode.jsを制す」
という格言があるそうです。
確かにファイルの入出力は大切ですが、ファイルの入出力を制しただけで、なぜNode.jsを制することができるのかが分かりません。
凡人には計り知れない、何か深い理由があるのでしょう。
というわけで、Node.jsで入力ストリームを扱うプログラムを書いてみたいと思います。
話が前後しますが、VueCLIで開発を行うにはNode.jsでの開発経験が必要らしいので、Node.jsを網羅的に解説している本を買ってきました。
ドン!
『サーバサイドJavaScript Node.js入門』
この本で使用しているNode.jsのバージョンは v0.8.3で、現在のバージョン(v12.16.0)に比べるとかなり古く、非推奨になったり削除されたりしたメソッドや、指定パラメータ名が違っていたりするんですが、ネット検索を併用しながら読み進めれば大丈夫なんじゃないかなと思います。
この本を読みながら、サンプルプログラムを書いてみました。
■sample.js
var path = require('path'); var fs = require('fs'); var filePath = path.join(__dirname, 'pclist.txt'); var readStream = fs.createReadStream(filePath); readStream.setEncoding('UTF8'); readStream.on('data', function(data) { console.log('[読み込み開始]'); process.stdout.write(data); }); readStream.on('end', function() { console.log('[読み込み終了]'); }); readStream.on('error', function() { console.log('なんやらエラーが出てまっせ'); console.log(err); });
読み込み用ファイルを用意しておきます。
■pclist.txt
パソコンリスト PC-8801mkII/SR Macintosh SE/30 Amiga 500 X68000 MZ-2500
(実行結果)
$ node sample.js [読み込み開始] パソコンリスト PC-8801mkII/SR Macintosh SE/30 Amiga 500 X68000 MZ-2500 [読み込み終了]
pclist.txtのパーミッションを変更して、読み込み禁止にしてからプログラムを実行すると、
「なんやらエラーが出てまっせ」
の後にエラー内容が表示されます。
とりあえず、入力ストリームのサンプルプログラムは出来ました。
あしたは出力だ。
ひゅ〜。