JavaScript:
Controleren of een directory bestaat
Hoe:
In JavaScript (draaiend in een Node.js omgeving), is er een ingebouwde module genaamd fs
die je kunt gebruiken om te controleren of een directory bestaat. Hier is een snel voorbeeld:
const fs = require('fs');
const path = './pad/naar/directory';
fs.access(path, fs.constants.F_OK, (err) => {
if (err) {
console.error(`${path} bestaat niet`);
} else {
console.log(`${path} bestaat`);
}
});
Voorbeelduitvoer:
./pad/naar/directory bestaat
Of gebruikmakend van de nieuwere fs.promises
API met async/await:
const fs = require('fs').promises;
async function controleerOfDirectoryBestaat(path) {
try {
await fs.access(path, fs.constants.F_OK);
console.log(`${path} bestaat`);
} catch {
console.error(`${path} bestaat niet`);
}
}
controleerOfDirectoryBestaat('./pad/naar/directory');
Voorbeelduitvoer:
./pad/naar/directory bestaat niet
Diepgaand
Historisch gezien betekende het controleren op een bestand of directory het gebruik van fs.stat
of fs.existsSync
, maar deze hebben nadelen. fs.stat
vereist extra logica om te bepalen of het pad een directory is, en fs.existsSync
is synchroon, wat de event loop in Node.js kan blokkeren.
Een alternatief is het gebruik van de fs.promises
API of async/await voor betere leesbaarheid en om je programma niet-blokkerend te houden.
Een implementatiedetail is dat fs.access
alleen controleert op het bestaan, niet de leesbaarheid of schrijfbaarheid van de directory. Andere vlaggen kunnen worden gebruikt met fs.access
om indien nodig naar die permissies te controleren.
Zie Ook
- Node.js
fs
documentatie: Node.js fs module - Meer over async/await: Asynchrone functie
- Info over bestandssysteemvlaggen: Bestandssysteemvlaggen