Node.js でフォルダーを操作する

Node.js の fs コアモジュールは、フォルダーの操作に使用できる便利なメソッドを多数提供しています。

フォルダーが存在するか確認する

フォルダーが存在し、Node.js がその権限でアクセスできるかを確認するには、fs.access() (およびその Promise ベースの対応物である fsPromises.access()) を使用します。

新しいフォルダーを作成する

新しいフォルダーを作成するには、fs.mkdir()fs.mkdirSync()、または fsPromises.mkdir() を使用します。

const  = ('node:fs');

const  = '/Users/joe/test';

try {
  if (!.()) {
    .();
  }
} catch () {
  .();
}

ディレクトリの内容を読み取る

ディレクトリの内容を読み取るには、fs.readdir()fs.readdirSync()、または fsPromises.readdir() を使用します。

このコードは、フォルダーの内容 (ファイルとサブフォルダーの両方) を読み取り、それらの相対パスを返します。

const  = ('node:fs');

const  = '/Users/joe';

.();

フルパスを取得できます。

fs.readdirSync(folderPath).map( => {
  return path.join(folderPath, );
});

結果をフィルタリングしてファイルのみを返し、フォルダーを除外することもできます。

const  = ('node:fs');

const  =  => {
  return .().();
};

.(folderPath)
  .( => {
    return path.join(folderPath, );
  })
  .();

フォルダーの名前を変更する

フォルダーの名前を変更するには、fs.rename()fs.renameSync()、または fsPromises.rename() を使用します。最初のパラメーターは現在のパス、2 番目は新しいパスです。

const  = ('node:fs');

.('/Users/joe', '/Users/roger',  => {
  if () {
    .();
  }
  // done
});

fs.renameSync() は同期バージョンです。

const  = ('node:fs');

try {
  .('/Users/joe', '/Users/roger');
} catch () {
  .();
}

fsPromises.rename() は Promise ベースのバージョンです。

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

async function () {
  try {
    await .('/Users/joe', '/Users/roger');
  } catch () {
    .();
  }
}
();

フォルダーを削除する

フォルダーを削除するには、fs.rmdir()fs.rmdirSync()、または fsPromises.rmdir() を使用します。

const  = ('node:fs');

.(dir,  => {
  if () {
    throw ;
  }

  .(`${dir} is deleted!`);
});

内容を含むフォルダーを削除するには、{ recursive: true } オプションを付けて fs.rm() を使用し、内容を再帰的に削除します。

{ recursive: true, force: true } を指定すると、フォルダーが存在しない場合に例外が無視されるようになります。

const  = ('node:fs');

.(dir, { : true, : true },  => {
  if () {
    throw ;
  }

  .(`${dir} is deleted!`);
});