Node.js - ファイル、ディレクトリ(サブファイル)の削除

ファイルを削除したり、ディレクトリを削除する方法を紹介します。

fs.unlink(file_path, callback) は引数として渡された file_path ファイルを非同期的に(async)削除します。絶対パスではなくファイル名のみを渡す場合は、現在の作業パスの下で相対パスでファイルを見つけます。削除が完了したりエラーが発生した場合は、コールバックが送出されます。

以下のようにファイルを削除できます。

const fs = require('fs')

fs.unlink('example.txt', err => {
  if (err) throw err;

  console.log('File is deleted.');
});

Output:

File is deleted.

1.2 fs.unlinkSync()

fs.unlinkSync(file) はファイルを同期的に(sync)削除します。 syncなので callback 引数はなく、エラーが発生すると unlinkSync() 内で発生します。

以下のように同期的にファイルを削除できます。

const fs = require('fs')

fs.unlinkSync('example.txt');
console.log('File is deleted.');

Output:

File is deleted.

2. fs.rmdir() でディレクトリとサブファイルを削除する

2.1 fs.rmdir()

fs.rmdir(dir_path, options, callback) は空のディレクトリや、ファイルを持っているディレクトリを非同期的に(async)削除します。

  • dir_path : 削除するフォルダパス(相対パスまたは絶対パス)
  • options : ディレクトリサブファイルも一緒に削除するには recursive: true オプションを追加
  • callback : ジョブの完了またはエラー発生時に callback 渡される

以下のように、 testディレクトリとサブファイルの両方を削除できます。

const fs = require('fs')

fs.rmdir('test', { recursive: true }, (err) => {
  if (err) {
    console.log(err)
  } else {
    console.log('Dir is deleted.');
  }
});

Output:

Dir is deleted.

もし recursive: true オプションを除いて rmdir() を呼び出すとディレクトリファイルだけを削除でき、削除したいディレクトリにファイルがあるときにエラーが発生します。

[Error: ENOTEMPTY: directory not empty, rmdir 'test'] {
  errno: -39,
  code: 'ENOTEMPTY',
  syscall: 'rmdir',
  path: 'test'
}

2.2 fs.rmdirSync()

fs.rmdirSync(dir_path, options)dir_path のディレクトリを同期的に(sync)削除します。上記と同様に、ディレクトリ内のすべてのサブファイルも削除するには、 recursive: trueオプションを追加する必要があります。

const fs = require('fs')

fs.rmdirSync('test', { recursive: true, force: true });
console.log('Dir is deleted.');

Output:

Dir is deleted.
codechachaCopyright ©2019 codechacha