Как работает метод read у потока полученного от require("fs").createReadStream?

Пытаясь разобраться в теме потоков я своей целью для экзекуций выбрал поток, который я получал методом require("fs").createReadStream, однако, когда я вызываю у него метод read, то никакого эффекта не могу заметить, при этом метод pipe, который в итоге должен вызывать внутри метод read работает исправно.

Не понятно почему метод read возвращает null

const fs = require("fs");
var stream = fs.createReadStream("info.txt");
console.log(stream.read()); //null
console.log(stream.read(1)); //null

При этом метод pipe выполняет всё так как должен

const fs = require("fs");
var stream = fs.createReadStream("info.txt");
stream.pipe(process.stdout); //text from file

Ответы (1 шт):

Автор решения: Grundy

У потоков чтения есть два режима работы.

  1. Получать данные автоматически
  2. Получать вручную

Добавление обработчика readable автоматически переводит в ручной режим и данные можно получать с помощью метода .read

const fs = require("fs");
var stream = fs.createReadStream("info.txt");
stream.on('readable', () => {
    console.log(stream.read()); 
    console.log(stream.read(1));
});
→ Ссылка