node删除文件

663 阅读1分钟
const fs = require('fs')
const { rmdirSync } = require('node:fs')
const path = require('path')

//1.删除文件 fs.unlinksync   删除文件夹fs.rmdirSnc 
// fs.readdirsync (获取子目录)  fs.statySync(isFile,isDirectory) 判断是否是文件
//同步删除数据

// function rmdirSync(dir){
//     let statobj = fs.statSync(dir)
//     if(statobj.isDirectory()){
//         let dirs = fs.readFileSync(dir)
//         dirs = dirs.map( d => path.join(dir,d))
//         dirs.forEach(d => {
//             rmdirSync(d)
//         })
//     }else{
//         fs.unlinkSync(dir)
//     }
// }

//异步串行删除
// function rmdir(dir,cb){
//     fs.stat(dir,(err,statObj) =>{
//         if(statObj.isDirectory()){
//             fs.readdir(dir,(err,dirs) => {
//                 dirs = dirs.map(item => path.join(dir,item))
//                 let index = 0
//                 function next(){
//                     if(index === dirs.length) return fs.rmdir(dir,cb)
//                     let current = dirs[index++]
//                     rmdir(current,next)
//                 }
//                 next()
//             })
//         }else{
//             fs.unlink(dir,cb)
//         }
//     })
// }



function rmdir(dir,cb){
        fs.stat(dir,(err,statObj) =>{
        if(statObj.isDirectory()){
            fs.readdir(dir,(err,dirs) => {
                dirs = dirs.map(item => path.join(dir,item))
                if(dirs.length == 0){
                    return fs.rmdir(dir,cb)
                }
                let index = 0
                function done(){
                    if(++index == dirs.length){
                        fs.rmdir(dir,cb)
                    }
                }
                for (let i = 0; i < dirs.length; i++) {
                    let dir = dirs[i]
                    rmdir(dir,done)
                }
            })
        }else{
            fs.unlink(dir,cb)
        }
    })
}