删除包含文件节点js的文件夹

时间:2016-07-20 16:10:10

标签: javascript node.js

我正在寻找一种方法来删除包含node.js文件的文件夹?

我知道有一种方法可以使用fs.rmdir()删除空文件夹,我尝试使用提供函数的npm rimraf模块" rm -rf" for node.js

socket.on("end", function (data) {
    rimraf("./a/b/c", function(err){
      if(err){
        console.log(err);
      }
    });
  });

但我一直收到这个错误。

{ [Error: ENOTEMPTY: directory not empty, rmdir './a/b/c']
  errno: -39,
  code: 'ENOTEMPTY',
  syscall: 'rmdir',
  path: './a/b/c' }

所以我尝试了另一种解决这个问题的方法,首先我清空目录,然后删除目录

   socket.on("end", function (data) {
        rimraf("./a/b/c/*", function(err){
          if(err){
            console.log(err);
          }else{
              fs.rmdir("./a/b/c")
           }
        });
      });

然后我收到此错误

Error: ENOTEMPTY: directory not empty, rmdir './a/b/c'
    at Error (native)

我检查了文件夹,rimraf删除了文件,但我不知道为什么我仍然在使用fs.rmdir()时出错。

编辑: 我查找了一个名为fs-extra的不同模块,并想出了这个。

fse.emptyDir("a/b/c/", function(err){
  if(err){
    console.log(err);
  } else {
    console.log("doneaaaa")
    fse.remove("a/b/c",function(err){
      if(err){
        console.log(err);
      } else {
        console.log('doneaswell');
      }
    });
  }
});

现在我收到了这个错误:

doneaaaa
{ [Error: EBUSY: resource busy or locked, unlink 'a/b/c/.nfs000000002ab5000d00000072']
  errno: -16,
  code: 'EBUSY',
  syscall: 'unlink',
  path: 'a/b/c/.nfs000000002ab5000d00000072' }

正如你所看到的那样,我得到了删除文件夹中文件的函数的第一部分,但是当它删除文件夹时,它会抛出EBUSY错误。

提前谢谢!

2 个答案:

答案 0 :(得分:0)

要同步删除它:

var fs = require('fs');
var deleteFolderRecursive = function(path) {
  if( fs.existsSync(path) ) {
    fs.readdirSync(path).forEach(function(file,index){
      var curPath = path + "/" + file;
      if(fs.lstatSync(curPath).isDirectory()) { // recurse
        deleteFolderRecursive(curPath);
      } else { // delete file
        fs.unlinkSync(curPath);
      }
    });
    fs.rmdirSync(path);
  }
};

答案 1 :(得分:0)

关于EBUSY错误,请做一件事。在尝试删除文件夹之前,请执行console.log(process.cwd())以查看Node进程所在的目录。如果Node在尝试删除的文件夹中,则它将发出EBUSY错误。我在正在开发的Node.js应用程序中遇到了这种情况。解决方案是在尝试删除目录之前,将目录(process.chdir(new directory))更改为我要删除的目录以外的其他目录,问题已解决。顺便说一下,这是在Windows上发生的。