Skip to content

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

ファイルの書き込み

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

javascript
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を使用することもできます。

javascript
const fs = require('node:fs')
const content = 'Some content!'

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

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

javascript
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は、ファイルが既に存在する場合はファイルの内容を置き換えます。

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

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

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

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

フラグに関する詳細情報は、fsのドキュメントを参照してください。

ファイルへの内容の追加

ファイルに追加するのは、新しい内容でファイルを上書きしたくないが、追加したい場合に便利です。

ファイルの末尾にコンテンツを追加する便利なメソッドはfs.appendFile()(とそのfs.appendFileSync()対応物)です。

javascript
const fs = require('node:fs')
const content = 'Some content!'

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

Promiseを使った例

fsPromises.appendFile()の例を以下に示します。

javascript
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()