Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: stream, readline, file system, buffer, Node.js

Как читать большой файл построчно, а не целиком в память?

Вопрос проверяет понимание работы с потоками и буферизованным чтением для обработки больших файлов без загрузки их целиком в оперативную память.

Короткий ответ

Для чтения большого файла построчно используется потоковое чтение (stream) и буферизация. В Node.js можно создать ReadStream и обрабатывать данные через событие 'data' или использовать модуль readline, который автоматически разбивает поток на строки. Это позволяет обрабатывать файлы любого размера, не загружая их в память целиком.

Длинный ответ

Потоковое чтение файлов

При работе с большими файлами (например, логи, CSV, JSON) загрузка всего содержимого в память может привести к переполнению памяти или замедлению приложения. Вместо этого используется потоковое чтение, когда данные читаются частями (чанками) и обрабатываются по мере поступления.

Пример на Node.js с readline

Модуль readline позволяет читать файл построчно, используя поток ввода. Он автоматически разбивает данные по символам новой строки и вызывает колбэк для каждой строки.

const fs = require('fs');
const readline = require('readline');

const rl = readline.createInterface({
  input: fs.createReadStream('bigfile.txt'),
  crlfDelay: Infinity
});

rl.on('line', (line) => {
  console.log('Строка:', line);
  // Обработка строки без загрузки всего файла
});

rl.on('close', () => {
  console.log('Файл прочитан полностью');
});

Как это работает

  • fs.createReadStream создает поток чтения, который выдает данные чанками (по умолчанию 64 КБ).
  • readline буферизует чанки и ищет разделители строк (\n, \r\n).
  • Каждая найденная строка передается в событие line.
  • Память используется только для текущей строки и небольшого буфера.

Применение

Этот подход полезен для обработки логов, импорта данных в БД, анализа CSV-файлов, парсинга больших JSON-массивов (с использованием потоковых парсеров).

Вывод: Потоковое чтение построчно — стандартный способ работы с большими файлами в Node.js, позволяющий экономить память и обрабатывать данные любого объема без риска переполнения.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • Node.js

    Node.js

Ключевые слова

#stream

#readline

#file system

#buffer

#Node.js

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.