Как составить список каталогов, доступных только для чтения, в Node.js

Чтобы вывести список каталогов, доступных только для чтения, в Node.js, вы можете использовать модуль fsдля доступа к файловой системе. Вот несколько методов, которые вы можете использовать:

  1. fs.readdir(): этот метод асинхронно считывает содержимое каталога и возвращает массив имен файлов. Затем вы можете использовать другие методы, чтобы определить, доступен ли каталог только для чтения.
const fs = require('fs');
fs.readdir(path, { withFileTypes: true }, (err, files) => {
  if (err) {
    console.error(err);
    return;
  }
// Filter directories that are read-only
  const readOnlyDirectories = files.filter((file) => {
    const isDirectory = file.isDirectory();
    const isReadOnly = !(file.mode & parseInt('222', 8)); // Check if directory is read-only
    return isDirectory && isReadOnly;
  });
  console.log(readOnlyDirectories);
});
  1. fs.stat(): этот метод извлекает информацию о файле. Приношу извинения за неполный ответ. Вот еще несколько способов вывести список каталогов, доступных только для чтения, в Node.js:

  2. fs.statSync(): этот метод синхронно получает информацию о файле или каталоге. Вы можете использовать его, чтобы проверить, доступен ли каталог только для чтения.

const fs = require('fs');
const files = fs.readdirSync(path, { withFileTypes: true });
const readOnlyDirectories = files.filter((file) => {
  const isDirectory = file.isDirectory();
  const isReadOnly = !(file.mode & parseInt('222', 8)); // Check if directory is read-only
  return isDirectory && isReadOnly;
});
console.log(readOnlyDirectories);
  1. fs.access(): этот метод проверяет доступность файла или каталога. Передав флаг fs.constants.R_OK, вы можете определить, доступен ли каталог для чтения.
const fs = require('fs');
fs.readdir(path, { withFileTypes: true }, (err, files) => {
  if (err) {
    console.error(err);
    return;
  }
  const readOnlyDirectories = [];
  files.forEach((file) => {
    if (file.isDirectory()) {
      try {
        fs.accessSync(`${path}/${file.name}`, fs.constants.R_OK);
      } catch (err) {
        readOnlyDirectories.push(file.name);
      }
    }
  });
  console.log(readOnlyDirectories);
});