Как работает метод 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
→ Ссылка
У потоков чтения есть два режима работы.
- Получать данные автоматически
- Получать вручную
Добавление обработчика readable автоматически переводит в ручной режим и данные можно получать с помощью метода .read
const fs = require("fs");
var stream = fs.createReadStream("info.txt");
stream.on('readable', () => {
console.log(stream.read());
console.log(stream.read(1));
});