पाठ 14 / 30

स्ट्रीम्स

Readable और writable streams से बड़े data को chunks में process करें, और pipe व backpressure से उन्हें जोड़ें।

रीडेबल और राइटेबल

एक readable स्ट्रीम डेटा के हिस्से भेजती है (data इवेंट); एक writable स्ट्रीम .write() से हिस्से स्वीकार करती है। फ़ाइलें, HTTP request/response, और process stdin/stdout — सभी स्ट्रीम हैं।

फ़ाइल को पाइप करना

pipe, readable स्ट्रीम को सीधे writable से जोड़ता है — Node backpressure खुद संभालता है।

import { createReadStream, createWriteStream } from "node:fs";

createReadStream("big-input.txt")
  .pipe(createWriteStream("copy.txt"));

त्वरित जाँच: बहुत बड़ी फ़ाइल के लिए readFile की तुलना में स्ट्रीम को क्यों प्राथमिकता दें?

  • स्ट्रीम के लिए कोड लिखना हमेशा तेज़ होता है
  • readFile 1KB से बड़ी फ़ाइल नहीं पढ़ सकता
  • Streams कभी memory उपयोग नहीं करते
  • स्ट्रीम पूरा डेटा मेमोरी में लोड करने के बजाय उसे टुकड़ों में प्रोसेस करती है
Answer

स्ट्रीम पूरा डेटा मेमोरी में लोड करने के बजाय उसे टुकड़ों में प्रोसेस करती है — स्ट्रीम मेमोरी उपयोग कम रखते हैं और पूरी फ़ाइल आने से पहले ही प्रोसेसिंग शुरू करने देते हैं।