我正在尝试构建代码以删除节点js中的文件(不带模块/外部终端/ cmd命令)。
直到现在,我得到的最好的成绩(我已经在Google上搜索并做了很多工作)是:
function rmdir(d) {
var self = arguments.callee
if (fs.existsSync(d)) {
fs.readdirSync(d).forEach(function(file) {
var C = d + '/' + file
if (fs.statSync(C).isDirectory()) self(C)
else fs.unlinkSync(C)
})
fs.rmdirSync(d)
}
}
但是,即使这里的所有内容都是“同步的”,执行fs.rmdirSync时,它也会引发错误,指出该文件夹不为空(而是)。
我该如何解决?
答案 0 :(得分:0)
您是否考虑过使用其中一种出色的库? rimraf 和 fs-extra都对递归删除提供了出色的支持,并且可以使用同步或异步方法。
对于app.yaml
,第86行的the source code for rimraf显示Array.forEach
用于遍历结果(尽管可以理解的是,如果失败,则将超时设置为重试几次)。话虽如此,performance tests for Array.forEach vs. for表明内置构造的运行速度明显加快。