這篇文章主要介紹了Node.JS循環刪除非空資料夾及子目錄下的所有檔案及node.js遞歸刪除非空資料夾的實例程式碼,需要的朋友可以參考下
最近要實現一個循環資料夾的功能,資料夾可能不是空的,還可能帶有子資料夾和文件,網路上找了一些現有的庫,但是都不提供刪除進度。所以就自己寫了一個。
var fs = require('fs') var path = require('path') var remove = function(tarPath, cb, removeStates) { if (!removeStates) { removeStates = { cur: 0, all: 0 } } else { if (!removeStates.cur) { removeStates.cur = 0; } if (!removeStates.all) { removeStates.all = 0; } } removeStates.all++; fs.stat(tarPath, function(err, states) { removeStates.cur++; if (err) { cb && cb() return } if (states.isDirectory()) { fs.readdir(tarPath, function(err, files) { if (err) { console.log(err) cb && cb() return } if (files.length < 1) { fs.rmdir(tarPath, cb) return } var count = 0 var checkEnd = function() { if (++count == files.length) { fs.rmdir(tarPath, cb) } } files.forEach(function(file) { remove(path.join(tarPath, file), checkEnd, removeStates) }) }) } else { fs.unlink(tarPath, function(err) { if (err) { console.log(err) } cb && cb() return }) } }) return removeStates }
使用很簡單
#var states = remove('./testdir', function() { console.log('delete complete') clearInterval(checkTimer) }); var checkTimer = setInterval(function() { console.log(states) }, 500);
輸出結果:
node remove.js { cur: 546, all: 546 } delete complete
PS:下面看下NodeJs遞歸刪除非空資料夾
此文由於第一次使用fs.unlink()刪除資料夾時報「Error: EPERM: operation not permitted, unlink」錯誤而寫,這是因為fs.unlink()只能刪除檔案。
fs.rmdir()
或fs.rmdirSync()
使用者刪除空資料夾,fs.unlink()或fs.unlinkSync() 用於刪除文件,因此刪除非空資料夾需要使用遞歸方式。
function deleteFolderRecursive(path) { if( fs.existsSync(path) ) { fs.readdirSync(path).forEach(function(file) { var curPath = path + "/" + file; if(fs.statSync(curPath).isDirectory()) { // recurse deleteFolderRecursive(curPath); } else { // delete file fs.unlinkSync(curPath); } }); fs.rmdirSync(path); } };
上面是我整理給大家的,希望今後對大家有幫助。
相關文章:
vue輪播圖外掛程式vue-concise-slider的使用
以上是Node.JS循環刪除非空白資料夾及子目錄下的所有文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!