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 можно использовать другие флаги для проверки этих разрешений.
Смотрите также
- Документация Node.js
fs: Модуль fs в Node.js - Больше об async/await: Асинхронная функция
- Информация о флагах файловой системы: Флаги файловой системы