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

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 14:11:26
字體:
供稿:網(wǎng)友

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

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);

輸出結(jié)果:

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

總結(jié)

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 公安县| 兴安盟| 东丰县| 林周县| 墨玉县| 邓州市| 新昌县| 南汇区| 修水县| 通化县| 息烽县| 平泉县| 石台县| 定日县| 辽源市| 龙山县| 泸溪县| 永定县| 上栗县| 浮山县| 景谷| 南丰县| 商南县| 桂阳县| 沧州市| 泰宁县| 承德市| 石楼县| 嘉善县| 确山县| 玛曲县| 页游| 留坝县| 武清区| 康平县| 凤城市| 洪江市| 策勒县| 都昌县| 唐河县| 格尔木市|