成都网站建设设计

将想法与焦点和您一起共享

node中实现删除目录的几种方法-创新互联

由于删除目录只能删除空目录(如果有子文件或文件夹要先删除)

成都网站设计、网站建设,成都做网站公司-成都创新互联已向上千余家企业提供了,网站设计,网站制作,网络营销等服务!设计与技术结合,多年网站推广经验,合理的价格为您打造企业品质网站。

目录结构算是典型的二叉树模型,所以涉及到遍历树结构


二叉树遍历(分为深度和广度,以及先序,中序,后序之分)


以下以深度先序解决目录删除


在node中由于主线程为单线程, 可以采取串行方式和并行方式


无论用什么方法删除,就一点核心: 如果是文件直接删除, 如果不是就删除所有子文件或子目录, 然后记得(一定记得删除自己)


深度先序(串行)


深度先序(串行 回调方式)


const fs = require('fs')
const path = require('path')
function rmdir(filePath, callback) {
  // 先判断当前filePath的类型(文件还是文件夹,如果是文件直接删除, 如果是文件夹, 去取当前文件夹下的内容, 拿到每一个递归)
  fs.stat(filePath, function(err, stat) {
    if(err) return console.log(err)
    if(stat.isFile()) {
      fs.unlink(filePath, callback)
    }else {
      fs.readdir(filePath, function(err, data) {
        if(err) return console.log(err)
        let dirs = data.map(dir => path.join(filePath, dir))
        let index = 0
        !(function next() {
          // 此处递归删除掉所有子文件 后删除当前 文件夹
          if(index === dirs.length) {
            fs.rmdir(filePath, callback)
          }else {
            rmdir(dirs[index++],next)
          }
        })()
      })
    }
  })
}

rmdir('a', function() {
  console.log('删除成功')
})


网站栏目:node中实现删除目录的几种方法-创新互联
当前路径:http://chengdu.cdxwcx.cn/article/issce.html