檢查檔案或目錄的許可權

fs.access() 確定路徑是否存在以及使用者對該路徑上的檔案或目錄具有哪些許可權。fs.access 不返回結果,如果它沒有返回錯誤,則路徑存在且使用者具有所需的許可權。

許可權模式可作為 fs 物件 fs.constants 上的屬性使用

  • fs.constants.F_OK - 具有讀/寫/執行許可權(如果未提供模式,則為預設值)
  • fs.constants.R_OK - 具有讀取許可權
  • fs.constants.W_OK - 具有寫許可權
  • fs.constants.X_OK - 具有執行許可權(與 Windows 上的 fs.constants.F_OK 相同)

非同步

var fs = require('fs');
var path = '/path/to/check';

// checks execute permission
fs.access(path, fs.constants.X_OK, (err) => {
    if (err) {
        console.log("%s doesn't exist", path);
    } else {
        console.log('can execute %s', path);
    }
});
// Check if we have read/write permissions
// When specifying multiple permission modes
// each mode is separated by a pipe : `|`
fs.access(path, fs.constants.R_OK | fs.constants.W_OK, (err) => {
    if (err) {
        console.log("%s doesn't exist", path);
    } else {
        console.log('can read/write %s', path);
    }
});

同步

fs.access 也有同步版 fs.accessSync。使用 fs.accessSync 時,必須將其包含在 try / catch 塊中。

// Check write permission
try {
    fs.accessSync(path, fs.constants.W_OK);
    console.log('can write %s', path);
}
catch (err) {
    console.log("%s doesn't exist", path);
}