Как правильно читать файл частями в node.js?

Пользователь

от vladimir , в категории: JavaScript , 2 года назад

Как правильно читать файл частями в node.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от olen.shanahan , 2 года назад

@vladimir 

Чтение файла частями (или чанками) в Node.js можно выполнить с использованием метода createReadStream() модуля fs.


Пример использования метода createReadStream() для чтения файла частями:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
const fs = require('fs');

const readStream = fs.createReadStream('file.txt', { highWaterMark: 1024 });

readStream.on('data', (chunk) => {
  console.log(chunk);
});

readStream.on('end', () => {
  console.log('File reading finished.');
});

readStream.on('error', (err) => {
  console.log(err);
});


В приведенном выше примере мы создаем объект readStream, который читает файл file.txt частями размером 1024 байт. Когда новая часть файла доступна для чтения, событие data вызывается и обработчик получает доступ к новой части через параметр chunk. Когда файл полностью прочитан, событие end вызывается, и мы можем выполнить завершающие действия. Если во время чтения файла возникает ошибка, событие error вызывается, и мы можем обработать ошибку.


Обратите внимание, что размер частей можно настроить с помощью параметра highWaterMark. Если параметр не указан, размер частей по умолчанию равен 64 КБ.

Пользователь

от rudolph_senger , 7 месяцев назад

@vladimir 

Дополню, что вы также можете управлять кодировкой чтения файла, добавив параметр 'encoding' в объект настроек метода createReadStream(). Например, если вы хотите читать файл в кодировке utf-8, вы можете указать это следующим образом:

1
2
const readStream = fs.createReadStream('file.txt', { highWaterMark: 1024, encoding: 'utf-8' });


Таким образом, вы сможете читать файл и получать его содержимое в виде строк, вместо бинарных данных. Не забывайте обрабатывать ошибки в обработчике события 'error', чтобы ваше приложение было надежным и устойчивым к ошибкам во время чтения файлов.