如何使用Node.js的测试文件的权限?(How to test file permissions

2019-09-18 05:33发布

我如何可以检查的权限(读/写/执行),一个正在运行的node.js过程对一个给定的文件吗?

我希望的是, fs.Stats对象有大约权限的一些信息,但我没有看到任何。 有一些内置的功能,让我做这样的检查? 例如:

var filename = '/path/to/some/file';
if (fs.canRead(filename)) // OK...
if (fs.canWrite(filename)) // OK...
if (fs.canExecute(filename)) // OK...

当然我没有尝试打开每个这些模式的文件和处理错误的消极肯定,对不对? 这里一定是一个简单的方法...

Answer 1:

我迟到了,但是,我一直在寻找同样的理由,你和了解这一点。

fs.access是一个你需要的。 它可从节点v0.11.15。

function canWrite(path, callback) {
  fs.access(path, fs.W_OK, function(err) {
    callback(null, !err);
  });
}

canWrite('/some/file/or/folder', function(err, isWritable) {
  console.log(isWritable); // true or false
});


Answer 2:

检查可读性不那么简单,因为像PHP语言使它看起来通过在单个库函数提取它。 一个文件可能是可读的每个人,或者只有它的组,或仅它的主人; 如果不readble给大家,你将需要检查,如果你实际上是组的成员,或者如果你是该文件的所有者。 它通常是更容易和更快的(不仅是写代码,而且执行检查)来​​尝试打开该文件,并处理错误。



Answer 3:

如何使用一个子进程 ?

var cp = require('child_process');

cp.exec('ls -l', function(e, stdout, stderr) {
  if(!e) {
    console.log(stdout);
    console.log(stderr);
    // process the resulting string and check for permission
  }
});

不知道但如果工艺和* child_process *共享相同的权限。



文章来源: How to test file permissions using node.js?