Я впервые пытаюсь просмотреть каталоги, но stat
выдает ошибки для некоторых каталогов из-за отсутствия разрешения.
Error: EPERM: operation not permitted, stat 'K:\System Volume Information'
Я хотел бы просто избегать вызова stat
для данного каталога, если он выдаст ошибку, но я не могу понять, как это сделать.
Я пыталсяглядя на игнорирование защищенных каталогов в целом. Тем не менее, во всех возникающих у меня вопросах использовались регулярные выражения, которые - насколько я ограничен в знаниях MacOS, Linux и того, как что-то обрабатывается в Windows - не подходили для среды Windows.
Я пытался проверить разрешения на чтение и запись для каталога, прежде чем делать какой-либо вызов stat
, но, похоже, это ничего не дает?
async function scanDirs(){
const
r = await fsp.readFile('./config.json', 'utf8'),
archives = JSON.parse(r).archives,
fs = require('fs'),
{ join } = require('path'),
traverse = async (dir) => {
try {
const perm = await fsp.access(dir, fs.constants.R_OK)
if (perm === undefined){
const stats = await fsp.stat(dir)
if (stats.isDirectory()){
const subfolders = await fsp.readdir(dir)
subfolders.forEach(path => {
const fullPath = join(dir, path)
traverse( fullPath )
})
}
}
}
catch (error){
console.error(error)
}
}
for (const dir of archives){
traverse(dir)
}
}
Я также только что попробовал проверитьразрешения для дочерних папок данной папки перед тем, как передать их обратно в traverse
, но это тоже не работает.
for (const path of subfolders){
const
fullPath = join(dir, path),
perm = await fsp.access(fullPath, fs.constants.R_OK)
if (perm === undefined) traverse(fullPath)
}
Любая помощь приветствуется.