Node.js で ファイル に書き込む 方法

0 件のコメント

テキストファイル の 書き込み

ファイル書き込みには fs.writeFile() を利用します。 詳細は以下の API DOC に記載しますが、まずはとりあえず動かすためのサンプルコードを載せます。

サンプルコード

var fs = require("fs");

var data = JSON.parse({
  message: "Hello World !"
});

fs.writeFile("./data/write/test.json", data, "utf8", (error) => {
  if (error) {
    console.log(JSON.stringify(error));
  }
});

解説

第1引数には書き込みたいファイルへのパス、第2引数に書き込みたいデータ、第3引数にファイルのエンコード種別を指定します。 ファイル書き込みが終わると第4引数で指定されたコールバックが呼び出されます。

ファイルが存在しない場合は新規作成を行い、存在する場合は上書きを行います。 ファイルを保存する先までのディレクトリが存在しない場合はエラーとなって書き込みできません。 書き込みたいフォルダへアクセスできるかどうかの確認は fs.stat() または fs.access() を利用します。

fs.writeFile(file, data[, options], callback)

ファイルの書き込みを非同期に行います。 このメソッドでは引数で指定したデータの書き込みを一度に行います。

path

第1引数に指定する「ファイルパス」は実行している JavaScript ファイルからの相対パスまたは絶対パスで指定します。

data

第2引数に書き込みたいデータを指定します。

[options]

第3引数に指定できるエンコード種別は以下のものから選択します。 引数を指定しない場合、UTF-8 で書き込みます。

エンコード種別 説明
"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)

第4引数のコールバックは エラーオブジェクト error を受け取ります。 書き込みたいファイルまでのディレクトリが存在しなかったり ( error.code = "ENOENT" )、アクセスできなかった場合 (error.code = "EPERM" または error.code = "EBUSY") にエラーとなります。

参考記事