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('./testdir', function() { console.log('delete complete') 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!