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)站的支持!
相關(guān)文章
nodemailer郵箱發(fā)送驗證碼的實現(xiàn)
郵箱注冊是常見的功能,通常需要發(fā)送郵箱驗證碼驗證,本文就來介紹一下nodemailer郵箱發(fā)送驗證碼的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-10-10
Ubuntu服務(wù)器上安裝Node.js的三種不同方法介紹
Node.js是一個強(qiáng)大的 JavaScript 運(yùn)行時環(huán)境,使開發(fā)者能夠使用 JavaScript 創(chuàng)建服務(wù)器端應(yīng)用程序,本文將詳細(xì)介紹三種安裝 Node.js 的方法,大家根據(jù)具體需求選擇最適合的安裝方式2025-03-03
如何構(gòu)建一個?NodeJS?影院微服務(wù)并使用?Docker?部署
微服務(wù)是一個單獨(dú)的自包含單元,與其他許多單元一起構(gòu)成一個大型應(yīng)用程序,這篇文章主要介紹了如何構(gòu)建一個NodeJS影院微服務(wù)并使用Docker部署,在這個系列中,將構(gòu)建一個 NodeJS 微服務(wù),并使用 Docker Swarm 集群進(jìn)行部署,需要的朋友可以參考下2023-08-08
Node+Express連接MySQL實現(xiàn)增刪改查功能
這篇文章主要為大家詳細(xì)介紹了Node如何結(jié)合Express連接MySQL實現(xiàn)增刪改查功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-05-05
Node.js中Bootstrap-table的兩種分頁的實現(xiàn)方法
這篇文章主要介紹了Node.js中Bootstrap-table的兩種分頁的使用方法,需要的朋友可以參考下2017-09-09

