Эффективное чтение файлов в каталоге с помощью Node.js opendir

Первоначально опубликовано в моем блоге.


Недавно мне нужно было просканировать содержимое очень большой директории, чтобы выполнить некоторые операции над каждым файлом.

Я хотел, чтобы эта операция была как можно быстрее, поэтому я знал, что если бы я использовал стандартные fsPromises.readdir или fs.readdirSync, которые читают каждый файл в каталоге за один проход, мне пришлось бы ждать, пока весь каталог будет прочитан, прежде чем работать с каждым файлом.

Вместо этого я хотел работать с файлом в тот момент, когда он был найден.

Чтобы решить эту проблему, я обратился к opendir (добавлена v12.12.0), который будет перебирать каждый найденный файл по мере его нахождения:

import { opendirSync } from "fs";

const dir = opendirSync("./files");
for await (const entry of dir) {
    console.log("Found file:", entry.name);
}
Войти в полноэкранный режим Выход из полноэкранного режима

fsPromises.opendir/openddirSync возвращают экземпляр Dir, который является итерабельным и возвращает Dirent (запись каталога) для каждого файла в каталоге.

Это более эффективно, поскольку возвращает каждый файл по мере его нахождения, вместо того, чтобы ждать, пока все файлы будут собраны.

Небольшой совет по Node.js для вас 🪄.


Следите за мной на Dev.to, Twitter и Github, чтобы узнать больше о веб-разработке и стартапах.

Оцените статью
devanswers.ru
Добавить комментарий