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

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

月光魔力鸭

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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
最近又回归了下DNF ,玩了一段时间,感觉也挺没意思的,关键是平时更没意思,想着不行搞个自动刷图吧(先说结论,没成)
通过imap 来接收邮箱新邮件,类似客户端系列,不过比较简单的,目前只有新邮件,后续也可以通过这个来做一个自己的邮件客户端。
当我们想实现一个自己的库或模块后,发布的话,需要发布到npm上才能下载。以下是具体步骤
在使用marked来做md解析的时候,部分解析规则可能并不是很如意,比如说,我在md中写了a标签,但是这些标签都是在当前页面替换的,而我想要的是新打开窗口。
在通过axios读取页面的时候,经常会碰到gbk的编码,如果不进行转化的话,在获取信息或读取上都会很麻烦。
关于js的编译和压缩,之前做过一个小工具了,主要就是自己项目成员大都没有这部分的技能,导致发布的时候总需要去编译压缩下.. 最终做了个命令行小工具.. 问题不在这里,前一阵子做压缩的时候发现压缩后竟然是undefined.最终才发现是es6的语法问题。
由于只是做个测试,这里使用了expresss简单搭建了个后台服务,提供文件断点下载。
最近有接触到针对二维码进行识别的功能,然后对图片进行位置纠正、二维码扫描,并将数据进行整理。以下是通过nodejs做的,相对简单一些,没有太过严格,识别率也不是很高大约80%左右