Проверка существования директории

JavaScript:
Проверка существования директории

Как это сделать:

В JavaScript (в среде Node.js) есть встроенный модуль под названием fs, который вы можете использовать для проверки существования директории. Вот быстрый пример:

const fs = require('fs');
const path = './path/to/directory';

fs.access(path, fs.constants.F_OK, (err) => {
    if (err) {
        console.error(`${path} не существует`);
    } else {
        console.log(`${path} существует`);
    }
});

Пример вывода:

./path/to/directory существует

Или используя новый API fs.promises с async/await:

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

async function checkDirectoryExists(path) {
    try {
        await fs.access(path, fs.constants.F_OK);
        console.log(`${path} существует`);
    } catch {
        console.error(`${path} не существует`);
    }
}

checkDirectoryExists('./path/to/directory');

Пример вывода:

./path/to/directory не существует

Подробнее

Исторически проверка файла или директории включала в себя использование fs.stat или fs.existsSync, но у них есть недостатки. fs.stat требует дополнительной логики для определения, является ли путь директорией, а fs.existsSync является синхронной, что может блокировать цикл событий в Node.js.

Альтернативой является использование API fs.promises или async/await для лучшей читаемости и чтобы ваша программа не блокировалась.

Одна из деталей реализации заключается в том, что fs.access проверяет только существование, а не возможность чтения или записи в директорию. Если это необходимо, с fs.access можно использовать другие флаги для проверки этих разрешений.

Смотрите также