fs.rename ENOENT:没有这样的文件或目录

时间:2018-08-28 16:26:17

标签: node.js fs

然后在node.js应用程序中使用fs.rename遇到麻烦。 我已经使用了下面的函数,并且可以正常运行。

var fs =require("fs");
var path =require("path")
module.exports= function(oldPath, newPath){
    oldPath=path.join(__dirname, "..", "documents", "bka" , oldPath);
    newPath=path.join(__dirname, "..", "documents", "bka" , newPath);
    fs.rename(oldPath, newPath, (err)=>{if (err) console.log(err)});
}

然后我尝试将函数用于另一种情况。 oldPath存在。 newPath不存在。 如果我不更改newPath,则不会发生错误。如果我更改它,则会发生以下错误,并且我不知道为什么:

{ Error: ENOENT: no such file or directory, rename '/home/ubuntu/workspace/documents/bka/7_Wall Street_1/9_Whg_Nr_22/7_bob' -> '/home/ubuntu/workspace/documents/bka/7_Wall Street_1/9_Whg_Nr_221/7_bob' at Error (native) errno: -2, code: 'ENOENT', syscall: 'rename', path: '/home/ubuntu/workspace/documents/bka/7_Wall Street_1/9_Whg_Nr_22/7_bob', dest: '/home/ubuntu/workspace/documents/bka/7_Wall Street_1/9_Whg_Nr_221/7_bob' }

如果您能帮助我,那将很棒。我以前曾经见过其他一些人也遇到过类似的问题,但没有找到任何可以使我理解这个问题的答案。

感谢amit

2 个答案:

答案 0 :(得分:0)

您正在将文件numpy重命名为>>> import numpy as np >>> matrix = np.array([[1,4,7],[2,5,8],[3,6,9]]) >>> matrix array([[1, 4, 7], [2, 5, 8], [3, 6, 9]]) >>> np.diag(matrix) array([1, 5, 9])

这仅在目录.../9_Whg_Nr_22/7_bob已经存在时才起作用,而我猜测它不存在,并且.../9_Whg_Nr_221/7_bob为您创建该目录。 / p>

在这种情况下,目标目录可能还不存在,您必须首先手动创建目录,例如使用mkdirp

答案 1 :(得分:0)

感谢您的回复。

我已将其修复。现在的代码是一团糟,但至少它能完成应有的工作。

var path =require("path");
var mkdirp =require("mkdirp");
var shell = require("shelljs");
var Promise= require("bluebird");
module.exports= function(oldPath, newPath){
    oldPath=path.join(__dirname, "..", "documents", "bka" , oldPath);
    newPath=path.join(__dirname, "..", "documents", "bka" , newPath);
    var oldArr= oldPath.split("/");
    var newArr= newPath.split("/");     
    var np="";
    var op="";
      var createDir=(path)=>{
        return new Promise((resolve)=>{
            mkdirp(path, (err)=>{
                if (err) throw err
                resolve(path)
            });
        });
    }
    
    var copy =(from, to)=>{
        return new Promise((resolve)=>{
            shell.cp("-R",from+"/*", to);
            resolve();
        });
    }
    var rm= (path)=>{
        return new Promise((resolve)=>{
             shell.rm("-R", path);
            resolve();
        });
    }
    
    var results=[]
    for( var i=0; i<oldArr.length; i++){
        op += oldArr[i]+"/";
        np += newArr[i]+"/";
        if(oldArr[i]!= newArr[i]){
            Promise.resolve()
            var result={}
            result.from=op;
            result.to=np;
            results.push(result);
        }
    }
    
    createDir(results[results.length-1].to)
        .then(()=>{ copy(results[results.length-1].from, results[results.length-1].to)
            .then(()=>{rm(results[0].from).then(()=>{
                results.pop();
            });
        });
    });
}