OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

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


分享到
分类 JS学习   关键字 Node.JS   发布 newghost  1520765519034
注意 转载须保留原文链接,译文链接,作者译者等信息。  
最近要实现一个循文件夹的功能,文件夹可能不是空的,还可能带有子文件夹和文件,网上找了一些现有的库,但是都不提供删除进度。所以就自己写了一个。


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
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  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 系统崩溃,迫使用户重装系统!
  11. AirJD-简单好用的免费建站工具

 相关阅读 - JS学习
  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

 关键字 - Node.JS
  1. Node.JS如何查看本地MAC/IP地址、计算cpu使用率和内存容量
  2. Express入门教程:一个简单的博客
  3. 在nodejs中使用Redis缓存和查询数据及Session持久化(Express)
  4. 如何收集捕获Node中的未处理的错误异常信息?
  5. trim-html:NodeJS的HTML文本截取库(自动生成正文摘要)
  6. Node.JS循环删除非空文件夹及子目录下的所有文件
  7. Node.js 和 JavaScript 的最新版 npm 导致 Linux 系统崩溃,迫使用户重装系统!
  8. [译]Node.js 框架比较: Express vs. Koa vs. Hapi
  9. 如何用Bootstrap免费网站模板和OnceAir云盘搭建个人网站服务器
  10. 沃尔玛为什么要采用Node.js

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号