欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年03月12日 08:34:19   投稿:mrr  
這篇文章主要介紹了Node.JS循環(huán)刪除非空文件夾及子目錄下的所有文件及node.js遞歸刪除非空文件夾的實(shí)例代碼,需要的朋友可以參考下

最近要實(shí)現(xiàn)一個(gè)循環(huán)文件夾的功能,文件夾可能不是空的,還可能帶有子文件夾和文件,網(wǎng)上找了一些現(xiàn)有的庫(kù),但是都不提供刪除進(jìn)度。所以就自己寫(xiě)了一個(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ò)誤而寫(xiě),這是因?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ì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 使用pm2運(yùn)行node應(yīng)用的流程步驟

    使用pm2運(yùn)行node應(yīng)用的流程步驟

    PM2是一個(gè)功能強(qiáng)大的進(jìn)程管理工具,專(zhuān)為?Node.js?應(yīng)用設(shè)計(jì),它提供了進(jìn)程管理、日志管理、負(fù)載均衡和性能監(jiān)控等功能,幫助開(kāi)發(fā)者輕松應(yīng)對(duì)生產(chǎn)環(huán)境中的各種挑戰(zhàn),本文給大家介紹了使用pm2?運(yùn)行node應(yīng)用的流程步驟,需要的朋友可以參考下
    2024-03-03
  • Windows上node.js的多版本管理工具用法實(shí)例分析

    Windows上node.js的多版本管理工具用法實(shí)例分析

    這篇文章主要介紹了Windows上node.js的多版本管理工具用法,結(jié)合實(shí)例形式分析了Windows平臺(tái)上node.js多版本管理工具nvm-windows的相關(guān)使用技巧,需要的朋友可以參考下
    2019-11-11
  • Node使用koa2實(shí)現(xiàn)一個(gè)簡(jiǎn)單JWT鑒權(quán)的方法

    Node使用koa2實(shí)現(xiàn)一個(gè)簡(jiǎn)單JWT鑒權(quán)的方法

    這篇文章主要介紹了Node使用koa2實(shí)現(xiàn)一個(gè)簡(jiǎn)單JWT鑒權(quán)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • nodejs實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼功能

    nodejs實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼功能

    這篇文章主要為大家詳細(xì)介紹了nodejs實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Electron調(diào)用外接攝像頭并拍照上傳實(shí)現(xiàn)詳解

    Electron調(diào)用外接攝像頭并拍照上傳實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了Electron調(diào)用外接攝像頭并拍照上傳實(shí)例實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • node.js安裝及HbuilderX配置詳解

    node.js安裝及HbuilderX配置詳解

    這篇文章主要介紹了node.js安裝及HbuilderX配置的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • node-webkit打包成exe文件被360誤報(bào)木馬的解決方法

    node-webkit打包成exe文件被360誤報(bào)木馬的解決方法

    這篇文章主要介紹了node-webkit打包成exe文件被360誤報(bào)木馬的解決方法的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • node.js中事件觸發(fā)器events的使用方法實(shí)例分析

    node.js中事件觸發(fā)器events的使用方法實(shí)例分析

    這篇文章主要介紹了node.js中事件觸發(fā)器events的使用方法,結(jié)合實(shí)例形式分析了node.js事件觸發(fā)器events的功能、原理及基本使用方法,需要的朋友可以參考下
    2019-11-11
  • NodeJS連接MongoDB數(shù)據(jù)庫(kù)時(shí)報(bào)錯(cuò)的快速解決方法

    NodeJS連接MongoDB數(shù)據(jù)庫(kù)時(shí)報(bào)錯(cuò)的快速解決方法

    下面小編就為大家?guī)?lái)一篇NodeJS連接MongoDB數(shù)據(jù)庫(kù)時(shí)報(bào)錯(cuò)的快速解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考
    2016-05-05
  • nodejs服務(wù)內(nèi)存泄露排查過(guò)程和優(yōu)化方法

    nodejs服務(wù)內(nèi)存泄露排查過(guò)程和優(yōu)化方法

    在開(kāi)發(fā)和部署Node.js應(yīng)用程序時(shí),內(nèi)存泄露是一個(gè)常見(jiàn)的挑戰(zhàn),本文將探討如何對(duì)于一個(gè)陌生項(xiàng)目進(jìn)行內(nèi)存排查和優(yōu)化的方法,文章通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11

最新評(píng)論