nodejs 实现递归删除文件夹以及子文件

nodejs 实现递归删除文件夹以及子文件

月光魔力鸭

2018-12-14 17:46 阅读 2455 喜欢 3 批量删除文件夹 递归删除 nodejs创建文件夹

我们都知道,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版本的(哈哈..其实是我抄的)

使用超级简单:

  1. 安装:
npm install mkdirsp
  1. 使用
//引入 mkdirsp
var mkdirsp = require('mkdirsp');
mkdirsp('/home/web/upload').then(function(){
    console.log('create success');
}).catch(function(e){
    console.log(e);
});

hiahiahiahia

转载请注明出处: https://chrunlee.cn/article/nodejs-delete-file.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
在开发的时候,经常会有css js 文件的变更,然后部署后发现没有起到作用,最终发现是缓存的问题,如何来方便的解决
有一个需求,需要公司的LOGO信息,但是没有,只有公司的名字,想着先生成个默认的(本来是可以通过前端判断然后合成的..但是不想改小程序了),于是开始准备处理。
由于国家的行政区划每年都有变化,所以经常需要更新最新的数据,这里提供一个nodejs版本mysql数据存储的抓取示例。
碰到个小需求,本来实现挺简单的,用的electron,开发模式下各种顺畅...半个小时就搞定了,结果倒在了electron打包上..这个坑我应该跳进来了好多次了..
关于js的编译和压缩,之前做过一个小工具了,主要就是自己项目成员大都没有这部分的技能,导致发布的时候总需要去编译压缩下.. 最终做了个命令行小工具.. 问题不在这里,前一阵子做压缩的时候发现压缩后竟然是undefined.最终才发现是es6的语法问题。
也不知道咋回事 ... 哈哈,忽然想研究下磁力网站,其实并不是很想懂里面的原理,只是搞不明白他们的资源是从哪里来的..很是纳闷?
发布自己的nodejs应用后,需要进行管理,目前一般都pm2来进行管理,这里记录下常用的命令。
获取文件夹内所有的文件。支持递归获取、异步或同步、过滤、返回信息处理。