Node.js で ファイル を 読み込む 方法

0 件のコメント

テキストファイル の 読み込み

ファイル読み込みには 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 の確認を行うことで同じことが実現できます。

参考記事