Node.js 检查文件或目录的权限

示例

fs.access()确定路径是否存在以及用户对该路径上的文件或目录具有什么权限。fs.access而是不返回结果,如果不返回错误,则说明该路径存在并且用户具有所需的权限。

权限模式可用作fs对象的属性,fs.constants

  • fs.constants.F_OK -具有读/写/执行权限(如果未提供任何模式,则为默认设置)

  • fs.constants.R_OK -具有读取权限

  • fs.constants.W_OK -具有写权限

  • fs.constants.X_OK-具有执行权限(与fs.constants.F_OKWindows相同)

异步地

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

// 检查执行权限
fs.access(path, fs.constants.X_OK, (err) => {
    if (err) {
        console.log("%s doesn't exist", path);
    } else {
        console.log('can execute %s', path);
    }
});
// 检查我们是否具有读/写权限
// 指定多种权限模式时
// 每个模式都由管道分隔:
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块中。

// 检查写权限
try {
    fs.accessSync(path, fs.constants.W_OK);
    console.log('can write %s', path);
}
catch (err) {
    console.log("%s doesn't exist", path);
}