↓もし、良かったらSNSでの紹介よろしくお願いします。

Node.jsでファイルの書き込み、ディレクトリ・フォルダ作成

bootstrap

ファイルの書き込み

writeFileSync

writeFileSyncはシンプルな挙動のファイルの書き込みです。

const fs = require('fs');

fs.writeFileSync('hoge.txt', 'hogehoge');

writeFile

次にwriteFileを利用し、
非同期処理を生かしたNode.js風の書き方をしてみます。

const fs = require('fs');

fs.writeFile('hoge.txt', 'hogehoge', (err) => {
  // 例外処理
  if (err) { throw err; }
})
console.log('ファイル書き込み中でも処理が走ります。');

console.log('ファイル書き込み中でも処理が走ります。')
がファイルの書き込みが完了を待たずに実行されているのがポイントです。

Syncがついているいないの挙動の違いは、
readFile,readFileSyncを確認したほうがわかりやすいかもしれません。

https://www.tech-tech.xyz/archives/nodejs-readfile-readfilesync.html

writeFileSyncとwriteFileを比較

writeFileSyncのメリット・デメリット

  • メリット: 理解しやすく、コードがわかりやすい
  • デメリット: Node.jsのノンブロッキングI/Oの恩恵を得られない

writeFile

  • メリット: ノンブロッキングI/Oによるパフォーマンスの向上
  • デメリット: コードが複雑になって、デバックしづらい

ファイルに追記

ファイルに追記したい場合は、

  • appendFileSync
  • appendSync

の2つが使えます。
使い方は、writeFileSync,writeSyncと同じです。

ディレクトリ・フォルダの作成

fs.mkdirSync

const fs = require('fs');

const dir = 'hoge';
fs.mkdirSync(dir);

fs.mkdir

const fs = require('fs');

const dir = 'hoge';
fs.mkdirSync(dir, (err) => {
  // 例外処理
  if (err) { throw err; }
});
console.log('ファイル書き込み中でも処理が走ります。');

ファイル・ディレクトリ・フォルダがあるかを確認

fs.existsSync

const fs = require('fs');

const file = 'hoge';
if (fs.existsSync(file)) {
  console.log('ファイルが存在する');
} else {
  console.log('ファイルが存在しない');
}

fs.existsは非推奨なので注意

fs.existsを使って非同期なファイル存在の確認ができます。
ただし、将来、廃止予定なので非推奨です。
代わりに、fs.statやfs.accessを利用するようにしましょう。

fs.statまたは、fs.accessを利用する

const fs = require('fs');

const file = 'hoge';
// statsはファイルが存在しないときundefined
fs.stat(file, (err, stats) => {
  if (stats) {
      console.log('ファイルが存在');
  } else {
    console.log('ファイルが存在しません');
  }
});

ディレクトリなかったら作成→ファイルを書く

syncを利用する(同期処理)

const fs = require('fs');

const dir = 'hoge';
if (!fs.existsSync(dir)) {
  fs.mkdirSync(dir);
}
fs.writeFileSync(`${dir}/hoge.txt`, 'hogehoge');