国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

Node.JS循環(huán)刪除非空文件夾及子目錄下的所有文件

2024-05-06 15:20:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

最近要實(shí)現(xiàn)一個(gè)循環(huán)文件夾的功能,文件夾可能不是空的,還可能帶有子文件夾和文件,網(wǎng)上找了一些現(xiàn)有的庫(kù),但是都不提供刪除進(jìn)度。所以就自己寫了一個(gè)。

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}

使用很簡(jiǎn)單

var states = remove('./testdir', function() {  console.log('delete complete')  clearInterval(checkTimer)});var checkTimer = setInterval(function() {  console.log(states)}, 500);

輸出結(jié)果:

node remove.js{ cur: 546, all: 546 }delete complete

PS:下面看下NodeJs遞歸刪除非空文件夾

此文由于第一次使用fs.unlink()刪除文件夾時(shí)報(bào)“Error: EPERM: operation not permitted, unlink”錯(cuò)誤而寫,這是因?yàn)閒s.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);  }};

總結(jié)

以上所述是小編給大家介紹的Node.JS循環(huán)刪除非空文件夾及子目錄下的所有文件,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)錯(cuò)新站長(zhǎng)站網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 崇文区| 岑溪市| 阳东县| 龙川县| 清涧县| 济宁市| 崇明县| 阜城县| 晋中市| 西峡县| 射阳县| 玉山县| 民权县| 佛山市| 津市市| 凌云县| 桦川县| 吴忠市| 潮州市| 麻江县| 溧水县| 福州市| 英德市| 山东| 平泉县| 文水县| 奉节县| 锡林郭勒盟| 尼勒克县| 奉新县| 宣化县| 金寨县| 偏关县| 济宁市| 辽阳县| 穆棱市| 阿克| 乐亭县| 双城市| 星子县| 子长县|