【发布时间】:2019-04-03 05:11:36
【问题描述】:
如果目录名称中包含空格,我将尝试重命名目录。 它重命名正确,但重命名后定义的回调函数从未调用过。
下面是我的递归函数,其中 fs 代表 文件系统 和 complete-directory-tree。
function renameDir(dirs){
dirs.forEach(function(e){
if(e.name.match(/\s+/g)){
var cname = e.name.replace(/\s+/g,'_');
var cpath = e.path.replace(e.name,cname);
fs.rename(e.path,cpath,function(err,data){
if(err) console.log(err)
else{
console.log('success');
e.path = cpath;
e.name = cname;
}
});
}
var nested = cDT(e.path)
if( nested.children && (nested.children.length > 0) ) renameDir(nested.children);
});
}
【问题讨论】:
-
它异步运行,因此在调用
renameDir之后查看dirs中的值的任何代码都将运行在回调运行之前。 -
@Quentin,是的,我什至只尝试过
console.log('success')。但看起来它从未记录过。仍然所有目录都完美重命名。 -
@Quentin 请在最后尝试并告诉我。请注意,即使我尝试单独使用 CONSOLE.LOG ,但它没有在控制台中记录它,但操作/重命名过程成功。我使用的是
fs.rename而不是fs.renameSync
标签: javascript node.js filesystems fs