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

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

月光魔力鸭

2018-12-14 17:46 阅读 1658 喜欢 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
  2. 使用
    //引入 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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
之前在知乎上有看到,基本上都是一致的,这里提供一个nodejs版本的针对微信内dat文件进行处理恢复为图片的方法。
今天写文章,突然发现自己常用的素材站换成了webp格式的图片.. 可惜本站还没准备加这个支持,所以准备加个webp转jpg的小功能,继续使用啦。
获取文件夹内所有的文件。支持递归获取、异步或同步、过滤、返回信息处理。
在日常开发中,经常会频繁的做一些重复性的操作,作为一名程序员,解放双手的时刻到了
由于国家的行政区划每年都有变化,所以经常需要更新最新的数据,这里提供一个nodejs版本mysql数据存储的抓取示例。
前几天给朋友帮忙,想要一个一模一样的网站...自告奋勇去帮忙.. 结果发现之前一直没处理过类似的情况,虽然也写过爬虫,不过看了下网站,也不算麻烦。于是简单实现了这个自动抓站的功能,最终整理成为一个自动抓站的工具,能省很多的事情。
也不知道咋回事 ... 哈哈,忽然想研究下磁力网站,其实并不是很想懂里面的原理,只是搞不明白他们的资源是从哪里来的..很是纳闷?
碰到个小需求,本来实现挺简单的,用的electron,开发模式下各种顺畅...半个小时就搞定了,结果倒在了electron打包上..这个坑我应该跳进来了好多次了..