node.js使用递归删除不为空的文件夹

const fs=require('fs');

/*//删除文件夹

fs.rmdir('./work',(err)=>{

    console.log(err);

});

//如果文件夹不为空 不能删除*/

/*

* 递归函数实现删除目录及子目录及文件

* 思路:

* 1) 给一个参数:是文件夹

* 2) 定义递归函数 del

* 3) 查看文件夹里面有没有子目录或文件

* fs.readdirSync()

* 4) 判断是否有子目录或子文件夹,如果有:

* 遍历数组,判断是不是文件或目录

* stats=fs.statSync('文件路径')

* stats.isFile()

* 5) 如果是文件,就删除

* fs.unlinkSync()

* 6) 如果是目录,调用自己(递归入口)

* 7) 删除空目录

* fs.rmdirSync()

* 注意:不能使用异步方式,因为要递归

*/

function del(p){

var arr=fs.readdirSync(p);

for(var i in arr){

//读取文件信息,以便于判断是否是一个文件或目录

var stats=fs.statSync(p+'/'+arr[i]);

if(stats.isFile()){

//判断为真,是文件则执行删除文件

fs.unlinkSync(p+'/'+arr[i]);

}else{

//判断为假就是文件夹,就调用自己,递归的入口

del(p+'/'+arr[i]);

}

}

//删除空目录

fs.rmdirSync(p);

}

del('./work');

结果截图:(其中work文件夹以及子文件被删除成功)

猜你喜欢

转载自blog.csdn.net/hemeng0115/article/details/84579608