Node.jsでディレクトリ内のファイルを削除する
Electronアプリを作っていて、ディレクトリ内のファイル削除機能が必要になったので実装しました。削除処理のコードはこちら(./src/dir
の部分は適宜置き換えてください)↓
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
const fs = require('fs'); | |
const dir = './src/diff'; | |
fs.readdir(dir, function(err, files){ | |
if(err){ | |
throw err; | |
} | |
files.forEach(function(file){ | |
fs.unlink(`${dir}/${file}`, function(err){ | |
if(err){ | |
throw(err); | |
} | |
console.log(`deleted ${file}`); | |
}); | |
}); | |
}); |
以下、処理内容についての補足です。
Node.jsでディレクトリ内のファイルを削除するにはfsモジュールのunlinkメソッドを使います。以下は公式ドキュメントのサンプルコード。ひとつの引数にファイルのパス、ふたつめの引数にはエラーオブジェクトを引数に受け取るコールバック関数を渡して使用します。
// Assuming that 'path/file.txt' is a regular file.
fs.unlink('path/file.txt', (err) => {
if (err) throw err;
console.log('path/file.txt was deleted');
});
単体のファイルならこれで削除できますが、今回やりたいのはディレクトリ内のファイルの一括削除です。
そこで、今度は同じfsモジュールのreaddirメソッドを使います。このメソッドを使うと、指定したディレクトリ内のファイル名を配列で取得できます。その配列に対して先ほどのunlinkメソッドを実行することで、ディレクトリ内のファイルをすべて削除できるというわけです。