Функция обратного вызова fs.rename не выполняется в файловой системе nodejs - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь переименовать каталоги, если они содержат пробел в их имени. Он переименовывается правильно, но после переименования определенная функция обратного вызова не вызывается.

моя рекурсивная функция ниже, где 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);
    });
}

1 Ответ

0 голосов
/ 30 октября 2018

Используйте этот код и путь должен зависеть от структуры вашей папки

'use strict';
const [fs, path] = [require('fs'), require('path')];

fs.readdir(__dirname, (err, data) => {
data.map(d => {
    if (d.includes(' ')) {
        let name = d.replace(/ /g, '_');
        fs.renameSync(path.resolve(__dirname, d), path.resolve(__dirname, name));
    }
})});
...