Как можно использовать цикл для просмотра содержимого файлов в NodeJS?

Как можно использовать NodeJS для асинхронного открытия нескольких JSON файлов, извлечения информации из них, и записи этой информации в переменную для последующей отправки на клиент, минимизируя блокировку основного потока?
  • 18 декабря 2023 г. 13:58
Ответы на вопрос 2
1. Чтение и просмотр содержимого файлов с использованием цикла:

```javascript
const fs = require('fs');
const path = require('path');

const directoryPath = 'путь_к_директории';

fs.readdir(directoryPath, (err, files) => {
  if (err) {
    console.log('Ошибка чтения директории:', err);
    return;
  }

  files.forEach(file => {
    const filePath = path.join(directoryPath, file);

    // Чтение содержимого файла
    fs.readFile(filePath, 'utf8', (err, data) => {
      if (err) {
        console.log('Ошибка чтения файла:', err);
        return;
      }

      console.log(`Содержимое файла ${file}:`, data);
    });
  });
});
```

2. Асинхронное открытие нескольких JSON файлов, извлечение информации и запись в переменную:

```javascript
const fs = require('fs');
const util = require('util');

const readFileAsync = util.promisify(fs.readFile);

async function processFiles(filePaths) {
  try {
    const data = [];

    for (const filePath of filePaths) {
      const fileContent = await readFileAsync(filePath, 'utf8');
      const jsonData = JSON.parse(fileContent);
      data.push(jsonData);
    }

    // Дальнейшая обработка данных

    console.log(data);
  } catch (error) {
    console.log('Ошибка:', error);
  }
}

const filePaths = [
  'путь_к_файлу1.json',
  'путь_к_файлу2.json',
  'путь_к_файлу3.json'
];

processFiles(filePaths);
```

В этом примере используется `util.promisify` для преобразования функции `fs.readFile` в промисифицированную версию, чтобы можно было использовать `await` для асинхронного чтения файла. Затем каждый файл считывается с использованием `await`, извлекается информация из JSON и записывается в массив `data`.
использовать только асинхронные методы

fs/promises :
1. Получить список файлов директории - fs.readdir.
1.1. Отфильтровать файлы только с расширением .json.
2. Чтение файлов в цикле - fs.readFile.
и в итоге отправлять содержимое на клиент

Здесь лучше начать с запроса от клиента на сервер.
Похожие вопросы