Arbeiten mit Ordnern in Node.js
Das Node.js fs
-Kernmodul bietet viele praktische Methoden, die Sie verwenden können, um mit Ordnern zu arbeiten.
Prüfen, ob ein Ordner existiert
Verwenden Sie fs.access()
(und sein auf Promises basierendes Gegenstück fsPromises.access()
), um zu prüfen, ob der Ordner existiert und Node.js mit seinen Berechtigungen darauf zugreifen kann.
const fs = require('node:fs');
try {
await fs.promises.access('/Users/joe');
} catch (err) {
throw err;
}
Einen neuen Ordner erstellen
Verwenden Sie fs.mkdir()
oder fs.mkdirSync()
oder fsPromises.mkdir()
, um einen neuen Ordner zu erstellen.
const fs = require('node:fs');
const folderName = '/Users/joe/test';
try {
fs.mkdirSync(folderName);
} catch (err) {
console.error(err);
}
Den Inhalt eines Verzeichnisses lesen
Verwenden Sie fs.readdir()
oder fs.readdirSync()
oder fsPromises.readdir()
, um den Inhalt eines Verzeichnisses zu lesen.
Dieses Codefragment liest den Inhalt eines Ordners, sowohl Dateien als auch Unterordner, und gibt ihren relativen Pfad zurück:
const fs = require('node:fs');
const folderPath = '/Users/joe';
fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName);
});
Sie können den vollständigen Pfad erhalten:
fs.readdirSync(folderPath)
.map(fileName => path.join(folderPath, fileName));
Sie können die Ergebnisse auch filtern, um nur die Dateien zurückzugeben und die Ordner auszuschließen:
const fs = require('node:fs');
const isFile = fileName => !fileName.includes(path.sep);
fs.readdirSync(folderPath)
.map(fileName => path.join(folderPath, fileName))
.filter(isFile);
Einen Ordner umbenennen
Verwenden Sie fs.rename()
oder fs.renameSync()
oder fsPromises.rename()
, um einen Ordner umzubenennen. Der erste Parameter ist der aktuelle Pfad, der zweite der neue Pfad:
const fs = require('node:fs');
fs.rename('/Users/joe', '/Users/roger', err => {
if (err) {
console.error(err);
}
});
fs.renameSync()
ist die synchrone Version:
const fs = require('node:fs');
try {
fs.renameSync('/Users/joe', '/Users/roger');
} catch (err) {
console.error(err);
}
fsPromises.rename()
ist die auf Promises basierende Version:
const fs = require('node:fs/promises');
async function example() {
try {
await fs.rename('/Users/joe', '/Users/roger');
} catch (err) {
console.log(err);
}
}
example();
Einen Ordner entfernen
Verwenden Sie fs.rmdir()
oder fs.rmdirSync()
oder fsPromises.rmdir()
, um einen Ordner zu entfernen.
const fs = require('node:fs');
fs.rmdir(dir, err => {
if (err) {
throw err;
}
console.log(`${dir} wurde gelöscht!`);
});
Um einen Ordner zu entfernen, der Inhalte hat, verwenden Sie fs.rm()
mit der Option { recursive: true }
, um die Inhalte rekursiv zu entfernen.
{ recursive: true, force: true }
bewirkt, dass Ausnahmen ignoriert werden, wenn der Ordner nicht existiert.
const fs = require('node:fs');
fs.rm(dir, { recursive: true, force: true }, err => {
if (err) {
throw err;
}
console.log(`${dir} wurde gelöscht!`);
});