Node.js でのファイルの書き込み

ファイルの書き込み

Node.js でファイルに書き込む最も簡単な方法は、fs.writeFile() API を使用することです。

const fs = require('node:fs');

const content = 'Some content!';

fs.writeFile('/Users/joe/test.txt', content, err => {
  if (err) {
    console.error(err);
  } else {
    // file written successfully
  }
});

ファイルを同期的に書き込む

または、同期バージョン fs.writeFileSync() を使用できます

const fs = require('node:fs');

const content = 'Some content!';

try {
  fs.writeFileSync('/Users/joe/test.txt', content);
  // file written successfully
} catch (err) {
  console.error(err);
}

また、fs/promises モジュールが提供する promise ベースの fsPromises.writeFile() メソッドを使用することもできます

const fs = require('node:fs/promises');

async function example() {
  try {
    const content = 'Some content!';
    await fs.writeFile('/Users/joe/test.txt', content);
  } catch (err) {
    console.log(err);
  }
}

example();

デフォルトでは、この API はファイルが既に存在する場合、ファイルの内容を置き換えます

フラグを指定することで、デフォルトを変更できます

fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => {});

使用する可能性の高いフラグは次のとおりです

フラグ説明ファイルが存在しない場合は作成されます
r+このフラグは、ファイルを読み取り書き込みのために開きます
w+このフラグは、ファイルを読み取り書き込みのために開きます。また、ストリームをファイルの先頭に配置します
aこのフラグは、ファイルを書き込みのために開き、ストリームをファイルの末尾に配置します
a+このフラグは、ファイルを読み取り書き込みのために開き、ストリームをファイルの末尾に配置します

ファイルにコンテンツを追加する

ファイルへの追加は、ファイルに新しいコンテンツを上書きするのではなく、追加したい場合に便利です。

ファイルの末尾にコンテンツを追加する便利なメソッドは fs.appendFile() (およびその fs.appendFileSync() カウンターパート) です。

const fs = require('node:fs');

const content = 'Some content!';

fs.appendFile('file.log', content, err => {
  if (err) {
    console.error(err);
  } else {
    // done!
  }
});

Promises の例

以下は、fsPromises.appendFile() の例です

const fs = require('node:fs/promises');

async function example() {
  try {
    const content = 'Some content!';
    await fs.appendFile('/Users/joe/test.txt', content);
  } catch (err) {
    console.log(err);
  }
}

example();