2015-05-20 13 views
25

Tôi cần phải kiểm tra xem một tập tin tồn tại trong một nhiệm vụ ngụm, tôi biết tôi có thể sử dụng một số chức năng nút từ nút, có hai:Kiểm tra nếu tập tin tồn tại Gulp

fs.exists()fs.existsSync()

Vấn đề được rằng trong tài liệu nút, đang nói rằng các chức năng này sẽ được phản

+0

có thể trùng lặp của [Kiểm tra đồng bộ nếu tệp/thư mục tồn tại trong Node.js] (https://stackoverflow.com/questions/4482686/check-synchronously-if-file-directory-exists-in-node-js) – Leland

Trả lời

38

Bạn có thể sử dụng fs.access

fs.access('/etc/passwd', (err) => { 
    if (err) { 
     // file/path is not visible to the calling process 
     console.log(err.message); 
     console.log(err.code); 
    } 
}); 

Danh sách mã lỗi có sẵn here


Sử dụng fs.access() để kiểm tra khả năng tiếp cận của một tập tin trước khi gọi fs.open(), fs.readFile() hoặc fs.writeFile() không được khuyến khích. Làm như vậy giới thiệu một điều kiện chủng tộc, vì các quá trình khác có thể thay đổi trạng thái của tệp giữa hai cuộc gọi. Thay vào đó, mã người dùng nên mở/đọc/ghi tệp trực tiếp và xử lý lỗi được nêu nếu tệp không truy cập được.

+0

Đẹp, hoạt động hoàn hảo ... –

+0

nút hiện tại documentatión [không n ot khuyên bạn nên sử dụng stat để kiểm tra xem có tồn tại một tệp không] [1]: [1]: https://nodejs.org/api/fs.html#fs_fs_stat_path_callback –

1

Bạn có thể thêm

var f; 

try { 
    var f = require('your-file'); 
} catch (error) { 

    // .... 
} 

if (f) { 
    console.log(f); 
} 
0

Nút tài liệu does not recommend using stat to check wether a file exists:

Sử dụng fs.stat() để kiểm tra sự tồn tại của một tập tin trước khi gọi fs.open(), fs .readFile() hoặc fs.writeFile() không được khuyến nghị. Thay vào đó, mã người dùng sẽ mở/đọc/ghi tệp trực tiếp và xử lý lỗi được nêu ra nếu tệp không khả dụng.

Để kiểm tra xem tệp có tồn tại mà không cần thao tác sau đó không, nên sử dụng fs.access().

Nếu bạn không cần phải đọc hoặc viết các tập tin bạn nên sử dụng fs.access, cách đơn giản và không đồng bộ là:

try { 
 
\t fs.accessSync(path) 
 
\t // the file exists 
 
}catch(e){ 
 
\t // the file doesn't exists 
 
}

Các vấn đề liên quan