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

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

月光魔力鸭

2018-12-14 17:46 阅读 2093 喜欢 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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
在我们做运维或者小工具的时候,总会有些需要提醒的事情,比如服务器宕机或者天气提醒,但是发email又会不够及时或者可能会忽略,那么短信就是一个不错的选择了
最近一直在围绕着我的小电脑在转,基本都是这方面的问题。在没有公网IP的情况下,这个问题就是我怎么才能通过域名访问到我家中的服务器。
为什么要读取图片呢?需求来源于这里。我有一大堆的ppt文件,里面全是图片,想将这些图片全部拿到,然后存储在数据库中,在线上预览,一张张的保存我自然是不乐意的。
当我们做爬虫或其他的一些应用的时候,如果需要一些短信验证,但是又没有那么多手机号,又不能放人在那里一直输入的时候?怎么办?
最近看到知乎上一话题:微信公众号文章里的视频怎么下载?。看还是有很多人推荐啥工具啊,很是捉急,当然本次的主题也是通过程序来获取内容,但是目前来说仅仅是娱乐吧。
碰到个小需求,本来实现挺简单的,用的electron,开发模式下各种顺畅...半个小时就搞定了,结果倒在了electron打包上..这个坑我应该跳进来了好多次了..
使用nodejs 连接mysql数据库还是很简单的,有现成的模块可以直接调用。下面介绍下 mysql 的调用
最近又回归了下DNF ,玩了一段时间,感觉也挺没意思的,关键是平时更没意思,想着不行搞个自动刷图吧(先说结论,没成)