检查文件或目录的权限
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);
}