###如何能使用nodejs原生的方法而不通过系统命令删除非空文件夹。 难到只能自己写递归删除?
回复 (13)
H
写个递归,还不简单,再封装成模块。 要用的时候,直接导入->调用。
Y
fs.rmdir(path, callback)
fs.rmdirSync(path)
注意: 其实只是用来删空目录的
Warning: ENOTEMPTY, directory not empty 'dist/images' Use --force to continue.
T
X
昨天我也遇到了这个问题。。。。只能自己写递归了。。参考司徒正美的博客也可以 http://www.cnblogs.com/rubylouvre/archive/2011/11/28/2264717.html
B
引用 hackerjs写个递归,还不简单,再封装成模块。 要用的时候,直接导入 调用。
@tarsean 貌似最好的解决方案就是rimraf模块了。
C
引用 chloe你们说得太复杂了 rm rf directorytodelete 子进程执行这个命令就可以了,何必那么的累呢
@bnuhero 我的,然后再问一下为什么要这样删除 我敢说自己递归删除绝对不如系统命令快
Y
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 ;
})
}
2
为何不用fs-extra?
C
你们说得太复杂了
rm -rf directorytodelete 子进程执行这个命令就可以了,何必那么的累呢
N
子进程完美解决~~
都不看内容。。
A
都不看前面的回复的么.. https://www.npmjs.org/package/rimraf 这个模块就 ok 了
参与回复
登录后即可参与回复。登录