Maison > interface Web > js tutoriel > le corps du texte

Boucles Node.JS pour supprimer tous les fichiers dans les dossiers et sous-répertoires non vides

亚连
Libérer: 2018-05-31 10:23:10
original
2378 Les gens l'ont consulté

Cet article présente principalement l'exemple de code de Node.JS supprimant cycliquement les dossiers non vides et tous les fichiers des sous-répertoires et de node.js supprimant de manière récursive les dossiers non vides. Les amis dans le besoin peuvent s'y référer

Récemment. , je souhaite implémenter une fonction pour parcourir les dossiers. Le dossier n'est peut-être pas vide, mais peut également contenir des sous-dossiers et des fichiers. J'ai trouvé des bibliothèques existantes en ligne, mais aucune d'entre elles ne fournit une progression de suppression. J’en ai donc écrit un moi-même.

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
}
Copier après la connexion

C'est très simple à utiliser

var states = remove(&#39;./testdir&#39;, function() {
  console.log(&#39;delete complete&#39;)
  clearInterval(checkTimer)
});
var checkTimer = setInterval(function() {
  console.log(states)
}, 500);
Copier après la connexion

Résultat de sortie :

node remove.js
{ cur: 546, all: 546 }
delete complete
Copier après la connexion

PS : Regardons NodeJs supprimant récursivement des dossiers non vides

Cet article a été écrit parce que la première fois que j'ai utilisé fs.unlink() pour supprimer un dossier, j'ai eu l'erreur "Erreur : EPERM : opération non autorisée, dissocier". C'est parce que fs.unlink() ne peut que supprimer. fichiers. Les utilisateurs

fs.rmdir() ou fs.rmdirSync() suppriment les dossiers vides, fs.unlink() ou fs.unlinkSync() est utilisé pour supprimer des fichiers, donc la suppression de dossiers non vides nécessite une récursion.

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);
  }
};
Copier après la connexion

Ce qui précède est ce que j'ai compilé pour vous. J'espère qu'il vous sera utile à l'avenir.

Articles connexes :

vue chargeant la méthode de fichier js personnalisée

Instance d'exécution de la fonction après avoir quitté la page vue

Utilisation du plug-in vue carrousel vue-concise-slider


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!