2016-07-20 75 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錯誤謝謝反正。 –

相關問題