Node.JS循環(huán)刪除非空文件夾及子目錄下的所有文件
最近要實(shí)現(xiàn)一個(gè)循環(huán)文件夾的功能,文件夾可能不是空的,還可能帶有子文件夾和文件,網(wǎng)上找了一些現(xiàn)有的庫(kù),但是都不提供刪除進(jìn)度。所以就自己寫(xiě)了一個(gè)。
var fs = require('fs') var path = require('path') var remove = function(tarPath, cb, removeStates) { if (!removeStates) { removeStates = { cur: 0, all: 0 } } else { if (!removeStates.cur) { removeStates.cur = 0; } if (!removeStates.all) { removeStates.all = 0; } } removeStates.all++; fs.stat(tarPath, function(err, states) { removeStates.cur++; if (err) { cb && cb() return } if (states.isDirectory()) { fs.readdir(tarPath, function(err, files) { if (err) { console.log(err) cb && cb() return } if (files.length < 1) { fs.rmdir(tarPath, cb) return } var count = 0 var checkEnd = function() { if (++count == files.length) { fs.rmdir(tarPath, cb) } } files.forEach(function(file) { remove(path.join(tarPath, file), checkEnd, removeStates) }) }) } else { fs.unlink(tarPath, function(err) { if (err) { console.log(err) } cb && cb() return }) } }) return removeStates }
使用很簡(jiǎn)單
var states = remove('./testdir', function() { console.log('delete complete') clearInterval(checkTimer) }); var checkTimer = setInterval(function() { console.log(states) }, 500);
輸出結(jié)果:
node remove.js { cur: 546, all: 546 } delete complete
PS:下面看下NodeJs遞歸刪除非空文件夾
此文由于第一次使用fs.unlink()刪除文件夾時(shí)報(bào)“Error: EPERM: operation not permitted, unlink”錯(cuò)誤而寫(xiě),這是因?yàn)閒s.unlink()只能刪除文件。
fs.rmdir()
或fs.rmdirSync()
用戶刪除空文件夾, fs.unlink()或fs.unlinkSync()用于刪除文件,因此刪除非空文件夾需要使用遞歸方式。
function deleteFolderRecursive(path) { if( fs.existsSync(path) ) { fs.readdirSync(path).forEach(function(file) { var curPath = path + "/" + file; if(fs.statSync(curPath).isDirectory()) { // recurse deleteFolderRecursive(curPath); } else { // delete file fs.unlinkSync(curPath); } }); fs.rmdirSync(path); } };
總結(jié)
以上所述是小編給大家介紹的Node.JS循環(huán)刪除非空文件夾及子目錄下的所有文件,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 使用nodeJS中的fs模塊對(duì)文件及目錄進(jìn)行讀寫(xiě),刪除,追加,等操作詳解
- 純異步nodejs文件夾(目錄)復(fù)制功能
- nodejs 遞歸拷貝、讀取目錄下所有文件和目錄
- Node.js fs模塊(文件模塊)創(chuàng)建、刪除目錄(文件)讀取寫(xiě)入文件流的方法
- Node.JS枚舉統(tǒng)計(jì)當(dāng)前文件夾和子目錄下所有代碼文件行數(shù)
- node.js基于fs模塊對(duì)系統(tǒng)文件及目錄進(jìn)行讀寫(xiě)操作的方法詳解
- Node.js查找當(dāng)前目錄下文件夾實(shí)例代碼
- Node.js本地文件操作之文件拷貝與目錄遍歷的方法
- Node.js實(shí)現(xiàn)在目錄中查找某個(gè)字符串及所在文件
- NodeJS 創(chuàng)建目錄和文件的方法實(shí)例分析
相關(guān)文章
Windows上node.js的多版本管理工具用法實(shí)例分析
這篇文章主要介紹了Windows上node.js的多版本管理工具用法,結(jié)合實(shí)例形式分析了Windows平臺(tái)上node.js多版本管理工具nvm-windows的相關(guān)使用技巧,需要的朋友可以參考下2019-11-11Node使用koa2實(shí)現(xiàn)一個(gè)簡(jiǎn)單JWT鑒權(quán)的方法
這篇文章主要介紹了Node使用koa2實(shí)現(xiàn)一個(gè)簡(jiǎn)單JWT鑒權(quán)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01nodejs實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼功能
這篇文章主要為大家詳細(xì)介紹了nodejs實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04Electron調(diào)用外接攝像頭并拍照上傳實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Electron調(diào)用外接攝像頭并拍照上傳實(shí)例實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02node-webkit打包成exe文件被360誤報(bào)木馬的解決方法
這篇文章主要介紹了node-webkit打包成exe文件被360誤報(bào)木馬的解決方法的相關(guān)資料,需要的朋友可以參考下2015-03-03node.js中事件觸發(fā)器events的使用方法實(shí)例分析
這篇文章主要介紹了node.js中事件觸發(fā)器events的使用方法,結(jié)合實(shí)例形式分析了node.js事件觸發(fā)器events的功能、原理及基本使用方法,需要的朋友可以參考下2019-11-11NodeJS連接MongoDB數(shù)據(jù)庫(kù)時(shí)報(bào)錯(cuò)的快速解決方法
下面小編就為大家?guī)?lái)一篇NodeJS連接MongoDB數(shù)據(jù)庫(kù)時(shí)報(bào)錯(cuò)的快速解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-05-05nodejs服務(wù)內(nèi)存泄露排查過(guò)程和優(yōu)化方法
在開(kāi)發(fā)和部署Node.js應(yīng)用程序時(shí),內(nèi)存泄露是一個(gè)常見(jiàn)的挑戰(zhàn),本文將探討如何對(duì)于一個(gè)陌生項(xiàng)目進(jìn)行內(nèi)存排查和優(yōu)化的方法,文章通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11