Node.js ファイル一覧削除
Node.jsでファイルを削除する場合
const fs = require("fs") fs.unlinkSync("ファイル名") //ファイル削除
上記のように、unlinkSync()関数
を使って削除したいファイル名
を指定すれば削除
できます。しかし、複数ファイルを削除したい場合や特定の拡張子を削除したい場合いくつかの関数を組み合わせる必要があります。ちなみにPHPでも同じようにunlink()
関数がありますがこの関数も同じくglob()
という関数と組合わることで拡張子指定した一括削除などのプログラムを作成することができます。Node.jsは、PHPでいうglob()関数
のような便利なものはありません。 Node.jsでは、readdir()
とRegExp()
を組み合わせることで実現できます。
txt拡張子のファイル一覧を取得とファイル削除
RegExpを使ってtxtという拡張子
だけ取り出すための定数を作成します。
const r1 = new RegExp(/.*\.txt$/) const r2 = /.*\.txt$/
r1とr2は同じ意味です。new RegExp()
を書く必要はありません。
つぎに、require("fs")
のreaddir()
と配列のフィルタリングを使います。
fs.readdir("./","utf8", (err, files)=>{ files.filter(one_file => { return fs.statSync(one_file).isFile() && r1.test(one_file) }).forEach(a => { console.log(a)//ここをunlinkSync()に置き換えると削除できる }) })
実行するとconsole.log()
にtxt拡張子だけが出力されています。
このconsole.log(a)
部分をunlinkSync(a)
に置き換えると削除できます。
同期の場合
同期でプログラムしたい場合は下記のようなプログラムです。
let files2 = fs.readdirSync("./","utf8") let filter2 = files2.filter(one_file => { return fs.statSync(one_file).isFile() && r1.test(one_file) }) for(let i =0; i<filter2.length; i++){ console.log(filter2[i])//ここをfs.unlinkSync(filter2[i])に変える }
非同期でのファイル削除
非同期の場合unlinkSync()
ではなくunlink()
を使います。
fs.unlink("ファイル名", (err)=>{ if(err) console.log(err) else console.log("unlink successfull") })