Controleren of een directory bestaat

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