テキストファイル の 読み込み
ファイル読み込みには fs.readFile()
を利用します。
詳細は以下の API DOC に記載しますが、まずはとりあえず動かすためのサンプルコードを載せます。
サンプルコード
var fs = require("fs"); fs.readFile("./data/test.json", "utf8", (error, data) => { if (error) { return; } console.log(data); });
解説
ファイルは fs.readFile()
で読み込むことができます。
第1引数には読み込みたいファイルへのパス、第2引数にファイルのエンコード種別を指定します。
ファイル読み込みが終わると第3引数で指定されたコールバックが呼び出されます。
通常、ファイル読み込み前にファイルの存在チェックを行いますが… Node.js では推奨されていないようです。
(少なからずファイル存在確認するメソッド fs.stat()
の説明には存在チェックは推奨しないと記載されていました。)
第3引数のコールバックに引き渡される error
が設定されているかどうかを確認するようにします。
fs.readFile(path[, options], callback)
ファイルの読み込みを非同期に行います。 読み込みはファイル全体を一度に読み込みます。
- path
-
第1引数に指定する「ファイルパス」は実行している JavaScript ファイルからの相対パスまたは絶対パスで指定します。
- [options]
-
第2引数に指定できるエンコード種別は以下のものから選択します。 引数を指定しない場合、 第3引数のコールバックに引き渡される読み込みデータは RAWデータ (
Buffer
) が返却されます。エンコード種別 説明 "ascii"
7ビット ASCII データのみからなる 文字列。 このエンコーディングは高速で設定されていれば上位ビットが取り除かれます。 "utf8"
マルチバイトエンコードされたUnicode文字列。 多くの Webページ および 文書フォーマットで UTF-8 を利用されています。 "utf16le"
2バイト または 4バイト の リトルエンディアンエンコードされた Unicode 文字列。 サロゲートペア文字 (U+10000 から U+10FFFF) がサポートされます。 "ucs2"
"utf16le"
のエイリアス。"base64"
Base64 エンコード。 このエンコーディングで 文字列から Buffer
を生成すると、RFC4648 5章 で定義されている "URL と ファイル名 で使える安全なアルファベット" を満たします。"latin1"
Buffer
を 1バイト文字列にエンコーディングします。"binary"
"latin1"
のエイリアス。"hex"
各バイトを2つの16進数で表現した文字列。 - callback(error, data)
-
第3引数のコールバックは エラーオブジェクト
error
と 読み取りデータdata
のどちらかを受け取ります。 ファイルが存在しなかったり読めなかった場合は エラーオブジェクトerror
が設定され、きちんと読めた場合は 読み取りデータdata
が設定されます。 ファイル存在チェックは事前に行わなくても エラーオブジェクトerror
の確認を行うことで同じことが実現できます。
参考記事
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!