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