पाठ 14 / 28

स्ट्रीम्स

पूरा डेटा मेमोरी में लोड करने के बजाय टुकड़ों में प्रोसेस करें।

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

एक 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 से बड़ी फ़ाइल नहीं पढ़ सकता
Answer

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