# स्ट्रीम्स — Node.js Fundamentals: Modules, Async और Servers

Source: https://www.skillbyai.com/hi/nodejs/node-streams

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

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

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

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

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

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

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

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

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

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