Nodejs 文件系统(fs) 删除文件夹 及 子文件夹下的所有内容
Node 文件系统fs为我们提供了一些方法 进行文件和文件夹的读写删除等操作
下边将介绍删除文件夹及子文件夹下的所有内容的相关命令(均含有同步和异步方法)
- fs.stat && fs.statSync 提供了访问文件的属性信息
- fs.readdir && fs.readdirSync 提供读取文件目录信息
- fs.unlink && unlinkSync 进行删除文件操作,不可以删除文件夹
- fs.rmdir && fs.rmdirSync 进行删除文件夹操作,但文件夹必须为空文件夹
接下来 进行文件夹的删除工作
第一步:将所有的文件删除(清空所有的文件夹)
第二步:删除所有的空文件夹
完成以上两步,就可以达到我们的目的了,下边来看看具体的代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| router.get('/removeFile',function(req,res,next){ var rootFile = '../赚钱啦';//要删除的文件夹 url //删除所有的文件(将所有文件夹置空) var emptyDir = function(fileUrl){ var files = fs.readdirSync(fileUrl);//读取该文件夹 files.forEach(function(file){ var stats = fs.statSync(fileUrl+'/'+file); if(stats.isDirectory()){ emptyDir(fileUrl+'/'+file); }else{ fs.unlinkSync(fileUrl+'/'+file); console.log("删除文件"+fileUrl+'/'+file+"成功"); } }); } //删除所有的空文件夹 var rmEmptyDir = function(fileUrl){ var files = fs.readdirSync(fileUrl); if(files.length>0){ var tempFile = 0; files.forEach(function(fileName) { tempFile++; rmEmptyDir(fileUrl+'/'+fileName); }); if(tempFile==files.length){//删除母文件夹下的所有字空文件夹后,将母文件夹也删除 fs.rmdirSync(fileUrl); console.log('删除空文件夹'+fileUrl+'成功'); } }else{ fs.rmdirSync(fileUrl); console.log('删除空文件夹'+fileUrl+'成功'); } } emptyDir(rootFile); rmEmptyDir(rootFile); res.send('YES!!!'); });
|
页面返回 YES!!! 就看看你的文件目录吧,是不是已经不存在了,大功告成~
代码优化:清空文件夹和删除文件夹一次进行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| var deleteFolder = module.exports.deleteFolder= function(path) { var files = []; if( fs.existsSync(path) ) { files = fs.readdirSync(path); files.forEach(function(file,index){ var curPath = path + "/" + file; if(fs.statSync(curPath).isDirectory()) { // recurse deleteFolder(curPath); } else { // delete file fs.unlinkSync(curPath); } }); fs.rmdirSync(path); } };
|