Heim  >  Artikel  >  Web-Frontend  >  Node.JS führt eine Schleife durch, um alle Dateien in nicht leeren Ordnern und Unterverzeichnissen zu löschen

Node.JS führt eine Schleife durch, um alle Dateien in nicht leeren Ordnern und Unterverzeichnissen zu löschen

亚连
亚连Original
2018-05-31 10:23:102326Durchsuche

In diesem Artikel wird hauptsächlich der Beispielcode von Node.JS vorgestellt, der nicht leere Ordner und alle Dateien in Unterverzeichnissen zyklisch löscht, und von node.js, der nicht leere Ordner rekursiv löscht. Freunde in Not können darauf verweisen

Kürzlich Ich möchte eine Funktion zum Durchlaufen von Ordnern implementieren. Der Ordner ist möglicherweise nicht leer, enthält jedoch möglicherweise auch Unterordner und Dateien. Ich habe jedoch einige vorhandene Bibliotheken gefunden, von denen jedoch kein Löschfortschritt angezeigt wird. Also habe ich selbst eines geschrieben.

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
}

Es ist einfach zu bedienen

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

Ausgabeergebnis:

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

PS: Werfen wir einen Blick auf NodeJs, das nicht leere Ordner rekursiv löscht

Dieser Artikel ist der Wenn ich es zum ersten Mal verwende, meldet fs.unlink() beim Löschen eines Ordners den Fehler „Fehler: EPERM: Vorgang nicht zulässig, Verknüpfung aufheben“. Dies liegt daran, dass fs.unlink() nur Dateien löschen kann.

fs.rmdir() oder fs.rmdirSync() Benutzer löschen leere Ordner, fs.unlink() oder fs.unlinkSync() wird zum Löschen von Dateien verwendet, sodass das Löschen nicht leerer Ordner eine Rekursion erfordert.

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

Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

vue lädt benutzerdefinierte JS-Dateimethode

Instanz der Funktionsausführung nach Verlassen der Vue-Seite

Nutzung des Vue-Karussell-Plug-ins vue-concise-slider


Das obige ist der detaillierte Inhalt vonNode.JS führt eine Schleife durch, um alle Dateien in nicht leeren Ordnern und Unterverzeichnissen zu löschen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn