nodejs删除非空文件夹
发布于 10 年前 作者 tarsean 30989 次浏览 最后一次编辑是 8 年前

###如何能使用nodejs原生的方法而不通过系统命令删除非空文件夹。 难到只能自己写递归删除?

13 回复

写个递归,还不简单,再封装成模块。 要用的时候,直接导入->调用。

fs.rmdir(path, callback)

fs.rmdirSync(path)

注意: 其实只是用来删空目录的

Warning: ENOTEMPTY, directory not empty ‘dist/images’ Use --force to continue.

简单,就是效率不高

昨天我也遇到了这个问题。。。。只能自己写递归了。。参考司徒正美的博客也可以 http://www.cnblogs.com/rubylouvre/archive/2011/11/28/2264717.html

@tarsean 貌似最好的解决方案就是rimraf模块了。

你们说得太复杂了

rm -rf directorytodelete 子进程执行这个命令就可以了,何必那么的累呢

请看原帖标题。

@bnuhero 我的,然后再问一下为什么要这样删除 我敢说自己递归删除绝对不如系统命令快

const fs=require("fs");
const co=require("zco");

let deleteDir=function(dir){
    return co(function *(next) {
        let [err,stat]=yield fs.stat(dir,next);
        if(err){
            return ;
        }
        if(stat.isFile()){
            yield fs.unlink(dir,next);
            return;
        }
        let [err1,list]=yield fs.readdir(dir,next);
        for(let i=0;i<list.length;i++){
            yield deleteDir(dir+"/"+list[i])(next);
        }
        yield fs.rmdir(dir,next);
        return ;
    })
}

为何不用fs-extra?

子进程完美解决~~

都不看内容。。

都不看前面的回复的么… https://www.npmjs.org/package/rimraf 这个模块就 ok 了

回到顶部