检查文件或目录的权限

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);
}