561 Stimmen

Verzeichnis entfernen, das nicht leer ist

In meiner Node-Anwendung muss ich ein Verzeichnis entfernen, das einige Dateien enthält, aber fs.rmdir funktioniert nur bei leeren Verzeichnissen. Wie kann ich das machen?

5voto

Giovanni Patruno Punkte 651

2020 Update

Von Version 12.10.0 recursiveOption wurde für Optionen hinzugefügt.

Beachten Sie, dass rekursives Löschen experimentell ist.

Also würden Sie für die Synchronisation tun:

fs.rmdirSync(dir, {recursive: true});

oder für asynchron:

fs.rmdir(dir, {recursive: true});

5voto

Amit Agarwal Punkte 10149

Wenn Sie async/await bevorzugen, können Sie die fs/promises API verwenden.

const fs = require('fs/promises');

const removeDir = async (dirPath) => {
  await fs.rm(dirPath, {recursive: true});
}

Wenn Sie den Pfad einer einzelnen Datei im Ordner kennen und den Ordner löschen möchten, in dem sich diese Datei befindet.

const fs = require('fs/promises');
const path = require('path');

const removeDir = async (filePath) => {
  const { dir } = path.parse(filePath);
  await fs.rm(dir, { recursive: true });
}

4voto

GOTO 0 Punkte 34193

In der neuesten Version von Node.js (12.10.0 oder höher) verfügen die rmdir-Stil Funktionen fs.rmdir(), fs.rmdirSync() und fs.promises.rmdir() über eine neue experimentelle Option recursive, die das Löschen von nicht leeren Verzeichnissen ermöglicht, z.B.

fs.rmdir(path, { recursive: true });

Der entsprechende PR auf GitHub: https://github.com/nodejs/node/pull/29168

4voto

Jin Kwon Punkte 18020

Ich bin hier gelandet, während ich versuchte, mit gulp fertig zu werden, und schreibe für weitere Erreichbarkeit.

Wenn Sie Dateien und Ordner mit del löschen möchten, sollten Sie /** für die rekursive Löschung anhängen.

gulp.task('clean', function () {
    return del(['some/path/to/delete/**']);
});

4voto

phreakphreak Punkte 43
return new Promise((resolve, reject) => {
  const fs = require("fs");
  // Verzeichnispfad
  const dir = "dein/Verzeichnis";

  // Verzeichnis rekursiv löschen <------
  fs.rmdir(dir, { recursive: true }, (err) => {
    if (err) {
      reject(err);
    }
    resolve(`${dir} wurde gelöscht!`);
  });
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X