Node.JS循环删除非空文件夹及子目录下的所有文件

前端之家收集整理的这篇文章主要介绍了Node.JS循环删除非空文件夹及子目录下的所有文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近要实现一个循环文件夹的功能文件夹可能不是空的,还可能带有子文件夹和文件,网上找了一些现有的库,但是都不提供删除进度。所以就自己写了一个。

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,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
}

使用很简单

输出结果:

PS:下面看下NodeJs递归删除非空文件

此文由于第一次使用fs.unlink()删除文件夹时报“Error: EPERM: operation not permitted,unlink”错误而写,这是因为fs.unlink()只能删除文件

fs.rmdir()fs.rmdirSync()用户删除文件夹, fs.unlink()或fs.unlinkSync()用于删除文件,因此删除非空文件夹需要使用递归方式。

总结

以上所述是小编给大家介绍的Node.JS循环删除非空文件夹及子目录下的所有文件。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

原文链接:https://www.f2er.com/nodejs/33256.html

猜你在找的Node.js相关文章