javascript - 如何检查路径中的每个文件是否可供读取

标签 javascript node.js fs readdir

我正在尝试读取特定路径的内容。为此,我使用了以下代码:

代码1:

const contentsOfPersonalFolder = fs.readdirSync(rootPathToPersonal);

但我事先知道我没有访问权限来读取上一行代码返回的某些内容。 要检查我是否有读取某些文件的访问权限,我将使用以下代码

代码2:

try {
  fs.accessSync(path, fs.constants.R_OK);
  logger.info('The directory: ', path, 'can be read');
} catch (err) {
  logger.error('The directory: ', path, 'can not be read due inaccessibility');
}

现在的问题是,code1中的代码将返回指定路径中所有可用文件的数组。如果这些文件之一不是 由于读权限保护而可访问,那么它会抛出,程序也会抛出。

我想要实现的是迭代code1中指定路径中的所有可用文件,然后使用code2中的代码检查每个项目和 如果该文件可供读取,我想做一些逻辑,如果不可读取,我会做其他事情。

请让我知道如何实现这一目标。

最佳答案

您可以使用fs.access来检查用户权限 https://nodejs.org/api/fs.html#fs_fs_access_path_mode_callback

const testFolder = './tests/';
const fs = require('fs');

fs.readdir(testFolder, (err, files) => {
  files.forEach(file => {
    console.log(file);
    fs.access(file, fs.constants.R_OK, (err) => {
        if (err) { 
            console.error("file is not readable");
            return;
        }

        // do your reading operations
    });
  });
})

关于javascript - 如何检查路径中的每个文件是否可供读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50859754/

相关文章:

javascript - node.js ParseError - 哪个文件抛出错误?

node.js - nodejs如何判断目录是否为空目录

javascript - 未捕获的类型错误 : Failed to resolve module specifier "fs". 相对引用必须以 "/"、 "./"或 "../"开头

javascript - 类似于 Java 中的 Quartz Composer 的图形 block 组合库

javascript - Bing map api 适用于 PC,但不适用于移动网络应用程序

node.js - socket.io 客户端 'emit' 在 Chrome 控制台中显示一个奇怪的错误

javascript - ServiceWorker 向 FetchEvent.respondWith() 传递了一个 promise ,该 promise 以非响应值 ‘undefined’ 解析。浏览器同步

Node.js读取文件,如果存在则追加数据,如果不存在则创建文件

javascript - 悬停导航不会保持打开状态以单击

javascript - 在 TypeScript 中定义方法的不同方式