node.js - 如何保证路径可读可写,无论文件是否存在? NodeJS

标签 node.js permissions fs

我的用例是我已经获得了一个配置文件目录,该目录可能已经存在,也可能不存在。如果它已经存在,我想阅读它,如果不存在,我想在那里编写一些默认值,将来可以通过该文件进行用户配置。

如果我没有读取和写入该路径上的文件的权限(无论文件是否已存在),我想报告该错误,以便可以更正它。

最佳答案

这绝对可以使用一些重构,但似乎是一种可行的方法。不过,我怀疑还有更简单的方法。仍然希望其他人能对此给出更好的答案。

function canReadAndWrite(targetPath) {
  return new Promise((resolve, reject) => {
    fs.stat(targetPath, (err) => {
      if (err) { reject(err); return; }
      fs.access(targetPath, fs.W_OK | fs.R_OK, (err) => {
        if (err) {
          const dir = path.dirname(targetPath);
          fs.access(dir, fs.W_OK | fs.R_OK, (err) => {
            if (err) { reject(err); return; }
            resolve(false);
          });
        }

        resolve(true);
      })
    }
  });
}

可以这样使用:

canReadAndWrite('/var/lib/test/config.json').then((exists) => {
    if (exists) {
        // safely read file
    } else {
        // safely write file
    }
}).catch((error) => {
    console.log('nope');
});

关于node.js - 如何保证路径可读可写,无论文件是否存在? NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38342472/

相关文章:

node.js - N个node.js进程之间的通信

javascript - @aws-sdk/lib-storage 使用 JSONStream.stringify() 将 JSON 从 MongoDB 流式传输到 S3

java - 写入 OSX's/Library/Application Support 文件夹会抛出 IOException : Permission denied

javascript - 使用 Nodejs 创建/更新 JavaScript 文件/代码

javascript - 如何重置使用 edit-json-file 编辑的文件

javascript - 在nodejs中过滤JSON数据

mysql - 从 NodeJS (Express App) 连接到 MySQL 会抛出错误

php - 在 Docker 环境中运行 Symfony 时的文件夹权限

swift - 根据帐户凭据复制 Storyboard View

node.js - 将字符串附加到 AWS Lambda 中的文本文件 Nodejs