📜  Node.js fs.access() 方法(1)

📅  最后修改于: 2023-12-03 15:17:54.360000             🧑  作者: Mango

Node.js fs.access() 方法

Node.js 提供了 fs 模块,其中一个方法是 fs.access(),该方法用于检查文件或目录是否存在以及用户是否有对其的权限。本文将介绍该方法的使用及相关细节。

语法
fs.access(path, mode, callback)

path:要检查的路径。

mode:用于指定文件或目录的检查操作,可选项有:

  • fs.constants.F_OK:默认选项,表示检查文件或目录是否存在。
  • fs.constants.R_OK:表示检查用户是否有读取文件或目录的权限。
  • fs.constants.W_OK:表示检查用户是否有写入到文件或目录的权限。
  • fs.constants.X_OK:表示检查用户是否有执行文件或目录的权限。

callback:回调函数,其参数有:

  • err:如果文件或目录无法访问,则为错误对象;否则为 null
  • fd:文件描述符对象,仅当 modefs.constants.F_OK 时可用。
示例

以下示例演示了 fs.access() 方法的基本使用方法。

const fs = require('fs');

// 检查文件是否存在
fs.access('./file.txt', (err) => {
  if (err) console.error(err);
  else console.log('文件存在');
});

// 检查目录是否存在
fs.access('./dir', (err) => {
  if (err) console.error(err);
  else console.log('目录存在');
});

// 检查用户是否有读取文件权限
fs.access('./file.txt', fs.constants.R_OK, (err) => {
  if (err) console.error(err);
  else console.log('用户有读取文件权限');
});

// 检查用户是否有写入到文件的权限
fs.access('./file.txt', fs.constants.W_OK, (err) => {
  if (err) console.error(err);
  else console.log('用户有写入到文件的权限');
});

// 检查用户是否有执行文件的权限
fs.access('./file.sh', fs.constants.X_OK, (err) => {
  if (err) console.error(err);
  else console.log('用户有执行文件的权限');
});
注意事项
  • 检查一个目录是否“存在”并不意味着该目录是一个目录,也可能是一个文件或其他文件类型。
  • fs.access() 方法是异步的,回调函数是必需的,且只能检查一个文件或目录的权限。如果需要检查多个路径,需要多次调用该方法。
  • 在检查文件权限时,如果文件不存在,则该方法也将返回错误对象。
  • fs.access() 方法并不打开文件或目录,因此不需要显式地关闭文件或目录。