Beginner Fundamentals
Streams
Streams let you handle data in chunks instead of loading everything into memory at once. This is essential for large files and network data.
Why streams
Reading a 2 GB file with readFile would load it all into memory. A stream reads small pieces, processes them, and moves on, keeping memory usage low.
Readable streams
A readable stream produces data you can listen to:
const fs = require("fs");
const stream = fs.createReadStream("big.txt", "utf8");
stream.on("data", (chunk) => {
console.log("Got a chunk of", chunk.length, "characters");
});
stream.on("end", () => {
console.log("Done reading");
});
Writable streams
A writable stream receives data:
const fs = require("fs");
const out = fs.createWriteStream("output.txt");
out.write("Line 1\n");
out.write("Line 2\n");
out.end();
Piping
pipe connects a readable stream to a writable one, copying data efficiently:
const fs = require("fs");
fs.createReadStream("input.txt").pipe(fs.createWriteStream("copy.txt"));
Summary
Streams move data in chunks, saving memory. Use pipe to connect a source to a destination with one line.