Node.JS循環(huán)刪除非空文件夾及子目錄下的所有文件
最近要實現(xiàn)一個循環(huán)文件夾的功能,文件夾可能不是空的,還可能帶有子文件夾和文件,網(wǎng)上找了一些現(xiàn)有的庫,但是都不提供刪除進(jìn)度。所以就自己寫了一個。
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 }
使用很簡單
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()刪除文件夾時報“Error: EPERM: operation not permitted, unlink”錯誤而寫,這是因為fs.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)刪除非空文件夾及子目錄下的所有文件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- 使用nodeJS中的fs模塊對文件及目錄進(jìn)行讀寫,刪除,追加,等操作詳解
- 純異步nodejs文件夾(目錄)復(fù)制功能
- nodejs 遞歸拷貝、讀取目錄下所有文件和目錄
- Node.js fs模塊(文件模塊)創(chuàng)建、刪除目錄(文件)讀取寫入文件流的方法
- Node.JS枚舉統(tǒng)計當(dāng)前文件夾和子目錄下所有代碼文件行數(shù)
- node.js基于fs模塊對系統(tǒng)文件及目錄進(jìn)行讀寫操作的方法詳解
- Node.js查找當(dāng)前目錄下文件夾實例代碼
- Node.js本地文件操作之文件拷貝與目錄遍歷的方法
- Node.js實現(xiàn)在目錄中查找某個字符串及所在文件
- NodeJS 創(chuàng)建目錄和文件的方法實例分析
相關(guān)文章
Node使用koa2實現(xiàn)一個簡單JWT鑒權(quán)的方法
這篇文章主要介紹了Node使用koa2實現(xiàn)一個簡單JWT鑒權(quán)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Electron調(diào)用外接攝像頭并拍照上傳實現(xiàn)詳解
這篇文章主要為大家介紹了Electron調(diào)用外接攝像頭并拍照上傳實例實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02node-webkit打包成exe文件被360誤報木馬的解決方法
這篇文章主要介紹了node-webkit打包成exe文件被360誤報木馬的解決方法的相關(guān)資料,需要的朋友可以參考下2015-03-03node.js中事件觸發(fā)器events的使用方法實例分析
這篇文章主要介紹了node.js中事件觸發(fā)器events的使用方法,結(jié)合實例形式分析了node.js事件觸發(fā)器events的功能、原理及基本使用方法,需要的朋友可以參考下2019-11-11NodeJS連接MongoDB數(shù)據(jù)庫時報錯的快速解決方法
下面小編就為大家?guī)硪黄狽odeJS連接MongoDB數(shù)據(jù)庫時報錯的快速解決方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考2016-05-05nodejs服務(wù)內(nèi)存泄露排查過程和優(yōu)化方法
在開發(fā)和部署Node.js應(yīng)用程序時,內(nèi)存泄露是一個常見的挑戰(zhàn),本文將探討如何對于一個陌生項目進(jìn)行內(nèi)存排查和優(yōu)化的方法,文章通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11