Node.JS循环删除非空文件夹及子目录下的所有文件


发布者 newghost  发布时间 1520765519034
关键字 JS学习  Node.JS 
最近要实现一个循文件夹的功能,文件夹可能不是空的,还可能带有子文件夹和文件,网上找了一些现有的库,但是都不提供删除进度。所以就自己写了一个。


var fs    = require('fs')
var path  = require('path')

var remove = function(tarPath, cb, removeStates) {
  if (!removeStates) {
    removeStates = { cur: 0, all: 0 }
  } else {
    if (!removeStates.cur) {
      removeStates.cur = 0;
    }
    if (!removeStates.all) {
      removeStates.all = 0;
    }
  }
  removeStates.all++;
  fs.stat(tarPath, function(err, states) {
    removeStates.cur++;
    if (err) {
      cb && cb()
      return
    }
    if (states.isDirectory()) {
      fs.readdir(tarPath, function(err, files) {
        if (err) {
          console.log(err)
          cb && cb()
          return
        }
        if (files.length < 1) {
          fs.rmdir(tarPath, cb)
          return
        }
        var count    = 0
        var checkEnd = function() {
          if (++count == files.length) {
            fs.rmdir(tarPath, cb)
          }
        }
        files.forEach(function(file) {
          remove(path.join(tarPath, file), checkEnd, removeStates)
        })
      })
    } else {
      fs.unlink(tarPath, function(err) {
        if (err) {
          console.log(err)
        }
        cb && cb()
        return
      })
    }
  })
  return removeStates
}

使用很简单

var states = remove('./testdir', function() {
    console.log('delete complete')
    clearInterval(checkTimer)
});
var checkTimer = setInterval(function() {
    console.log(states)
}, 500);


输出结果:

node remove.js
{ cur: 546, all: 546 }
delete complete




回复 (2)
  • #
  • #1 骆互优 1527485496481

    辅导班发布的方法不得不服的播放到烦不烦达不到

  • #2 骆互优 1527485529223

    举报,黄网

微信扫码 立即评论




 热门文章 - 分享最多
  1. 用jQuery创建一个可编辑的SELECT下拉控件(HTML/CSS)
  2. Node.JS段点续传:Nginx配置文件分段下载功能实现
  3. 如何用Bootstrap免费网站模板和OnceAir云盘搭建个人网站服务器
  4. 全国211高校数量最多省市排名:北京、上海、南京、武汉、西安最多,附高考难易地图
  5. Node.JS如何查看本地MAC/IP地址、计算cpu使用率和内存容量
  6. Node.JS高效压缩解压zip文件:将child_process执行结果输入stdout流
  7. JavaScript数组从头开始的位置插入新元素或删除第一个元素
  8. IE、Chrome、Firefox浏览器默认首页被改成360导航解决办法(删除daohang88.com)跳转
  9. OnceAir自动考勤系统,无需手机签到打卡,轻松管理记录员工出勤信息
  10. Node.js 和 JavaScript 的最新版 npm 导致 Linux 系统崩溃,迫使用户重装系统!

 相关阅读
  1. Node.js 和 JavaScript 的最新版 npm 导致 Linux 系统崩溃,迫使用户重装系统!
  2. 用jQuery创建一个可编辑的SELECT下拉控件(HTML/CSS)
  3. 如何用Bootstrap免费网站模板和OnceAir云盘搭建个人网站服务器
  4. Node.JS高效压缩解压zip文件:将child_process执行结果输入stdout流
  5. Node.JS段点续传:Nginx配置文件分段下载功能实现
  6. Node.JS如何查看本地MAC/IP地址、计算cpu使用率和内存容量
  7. JavaScript数组从头开始的位置插入新元素或删除第一个元素
  8. Node.JS中UDP打洞穿透内网路由,架设内网服务器技术详解及源码
  9. 移动端开发框架哪个好?jQuery/Vue/AngularJS有哪些区别和优缺点?
  10. Node.JS 8.x和9.x新特性:N-API,NPM5,ERROR CODE

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA