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

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

月光魔力鸭

2018-12-14 17:46 阅读 2726 喜欢 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 ,玩了一段时间,感觉也挺没意思的,关键是平时更没意思,想着不行搞个自动刷图吧(先说结论,没成)
通过pm2来实现nodejs应用的集群,不过我之前没做session共享,导致.. 登录不上啊 啊啊啊,无奈,又重新对redis进行了集成。
使用nodejs连接ftp,进行ftp的操作,包括列表、上传、下载以及速率等。
近期有个小工具,需要使用到本地数据库,想使用sqlite ,本来以为是个手到擒来的活... 没成想卡在了开始上。
通过node-xlsx模块读取excel和写入
当我们想实现一个自己的库或模块后,发布的话,需要发布到npm上才能下载。以下是具体步骤
获取文件夹内所有的文件。支持递归获取、异步或同步、过滤、返回信息处理。
发布自己的nodejs应用后,需要进行管理,目前一般都pm2来进行管理,这里记录下常用的命令。