Количество данных, которые блок (буфер) переносит в ReadStreaming из файла (текстового файла) в узле js? - PullRequest
0 голосов
/ 06 мая 2018

Можно ли узнать количество данных, которые блок (буфер) переносит в ReadStreaming из файла (текстового файла) в узле js ???

Я создал ReadStream и отобразил данные текстового файла в виде кусков, но возможно ли найти объем данных, который может иметь буфер?

var myReadStream = fs.createReadStream( __dirname + '/readme.txt', 'utf8');

myReadStream.on('data', function(chunk){

    console.log('new chunk received');
    console.log(chunk);

1 Ответ

0 голосов
/ 06 мая 2018

Можно ли узнать количество данных, которые блок (буфер) переносит в ReadStreaming из файла (текстового файла) в узле js ???

Да, в вашем примере chunk.length будет количеством данных в чанке.

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

Вы можете контролировать максимальный размер буфера в потоке во время создания потока с помощью опции highWaterMark, как показано в документе .

var myReadStream = fs.createReadStream( __dirname + '/readme.txt', 'utf8', { highWaterMark: 60000 });

Но установив это значение на большее, можно получить только большие куски. Это не гарантирует.

Я создал ReadStream и отобразил данные текстового файла в виде кусков, но возможно ли найти объем данных, который может иметь буфер?

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

myReadStream._readableState.highWaterMark

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...