我正在尝试读取特定路径的内容。为此,我使用了以下代码:
代码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/