我们都知道,nodejs
删除文件直接使用fs.unlink
就可以啦,删除文件使用fs.rmdir
就好,但是.. nodejs
不支持删除有文件的文件夹,所以,还需要对文件进行递归来删除文件夹。
//删除目录下的所有文件
function delFile(fileUrl,flag){
if (!fs.existsSync(fileUrl)) return;
// 当前文件为文件夹时
if (fs.statSync(fileUrl).isDirectory()) {
var files = fs.readdirSync(fileUrl);
var len = files.length,
removeNumber = 0;
if (len > 0) {
files.forEach(function(file) {
removeNumber ++;
var stats = fs.statSync(fileUrl+'/'+file);
var url = fileUrl + '/' + file;
if (fs.statSync(url).isDirectory()) {
delFile(url,true);
} else {
fs.unlinkSync(url);
}
});
if(len == removeNumber && flag){
fs.rmdirSync(fileUrl);
}
} else if(len == 0 && flag){
fs.rmdirSync(fileUrl);
}
} else {
// 当前文件为文件时
fs.unlinkSync(fileUrl);
console.log('删除文件' + fileUrl + '成功');
}
}
效果:
1. 如果要删除的是文件,且存在,则直接删除
2. 如果要删除的是文件夹,那么会遍历文件夹下的文件(文件夹),然后执行递归
3. 但是..不会删除第一次传递的文件夹
比如:
delFile('d:/ttt')
,会删除d:/ttt
下的所有文件和文件夹,但是ttt
不会被删除。
题外话,既然有删除,那么就会有创建,比如"给定一个目录,然后批量创建怎么样"?
这里推荐一个nodejs的包:mkdirsp
promise版本的(哈哈..其实是我抄的)
使用超级简单:
npm install mkdirsp
//引入 mkdirsp
var mkdirsp = require('mkdirsp');
mkdirsp('/home/web/upload').then(function(){
console.log('create success');
}).catch(function(e){
console.log(e);
});
转载请注明出处: https://chrunlee.cn/article/nodejs-delete-file.html