【问题标题】:fs.rename ENOENT: no such file or directoryfs.rename ENOENT:没有这样的文件或目录
【发布时间】:2019-02-03 08:37:36
【问题描述】:

我在 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' }

如果你能帮助我,那就太好了。过去我看到其他一些人遇到过类似的问题,但我没有找到任何可以让我理解问题的答案。

谢谢阿米特

【问题讨论】:

    标签: node.js fs


    【解决方案1】:

    您正在将文件 .../9_Whg_Nr_22/7_bob 重命名为 .../9_Whg_Nr_221/7_bob

    这仅在目录9_Whg_Nr_221 已经存在时才有效,我猜它不存在,fs.rename不会为您创建该目录。

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

    【讨论】:

      【解决方案2】:

      感谢您的回复。

      我修好了。代码现在一团糟,但至少它做了它应该做的。

      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();
                  });
              });
          });
      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-03
        • 2014-01-12
        • 1970-01-01
        • 2023-03-31
        • 2013-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多