2016-07-20 140 views
0

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

我知道存在方式使用fs.rmdir()删除空文件夹,我尝试使用NPM rimraf模块,提供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错误。

预先感谢您!

回答

0

要syncronously其删除:

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); 
    } 
}; 
+0

我想你的功能,它删除这些文件,但是当涉及到删除的文件夹,它抛出的ENOTEMPTY错误谢谢反正。 –

相关问题