Kiểm tra xem thư mục có tồn tại không

JavaScript:
Kiểm tra xem thư mục có tồn tại không

Làm thế nào:

Trong JavaScript (chạy trong môi trường Node.js), có một mô-đun tích hợp gọi là fs mà bạn có thể sử dụng để kiểm tra xem thư mục có tồn tại hay không. Dưới đây là một ví dụ nhanh:

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

fs.access(path, fs.constants.F_OK, (err) => {
    if (err) {
        console.error(`${path} không tồn tại`);
    } else {
        console.log(`${path} tồn tại`);
    }
});

Kết quả mẫu:

./path/to/directory tồn tại

Hoặc sử dụng API fs.promises mới hơn với async/await:

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

async function checkDirectoryExists(path) {
    try {
        await fs.access(path, fs.constants.F_OK);
        console.log(`${path} tồn tại`);
    } catch {
        console.error(`${path} không tồn tại`);
    }
}

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

Kết quả mẫu:

./path/to/directory không tồn tại

Sâu hơn

Trong lịch sử, việc kiểm tra một tệp hoặc thư mục bao gồm việc sử dụng fs.stat hoặc fs.existsSync, nhưng các phương pháp này có nhược điểm. fs.stat đòi hỏi phải có thêm logic để xác định liệu đường dẫn có phải là thư mục không, và fs.existsSync là đồng bộ, có thể chặn vòng lặp sự kiện trong Node.js.

Một phương án khác là sử dụng API fs.promises hoặc async/await để cải thiện khả năng đọc và giữ cho chương trình của bạn không bị chặn.

Một chi tiết thực hiện là fs.access chỉ kiểm tra sự tồn tại, không kiểm tra khả năng đọc hoặc ghi của thư mục. Có thể sử dụng các cờ khác với fs.access để kiểm tra những quyền này nếu cần.

Xem thêm