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: Асинхронная функция
- Информация о флагах файловой системы: Флаги файловой системы