Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Writing data with Writable streams
📖 Scenario: You are building a simple Node.js program that writes some text data to a file using a writable stream. This is useful when you want to save logs or output data efficiently.
🎯 Goal: Create a writable stream to a file called output.txt and write three lines of text data to it using the stream's write method. Then close the stream properly.
📋 What You'll Learn
Create a writable stream to a file named output.txt
Write exactly these three lines to the stream: 'First line\n', 'Second line\n', 'Third line\n'
Close the writable stream using the end() method
💡 Why This Matters
🌍 Real World
Writable streams are used in Node.js to efficiently write data to files, network sockets, or other destinations without loading everything into memory at once.
💼 Career
Understanding writable streams is important for backend developers working with file systems, logging, or streaming data in Node.js applications.
Progress0 / 4 steps
1
Create a writable stream
Write a line to import the fs module and create a writable stream called writeStream that writes to a file named output.txt.
Node.js
Hint
Use require('fs') to import the file system module. Then use fs.createWriteStream('output.txt') to create the stream.
2
Write the first line to the stream
Use the writeStream.write() method to write the string 'First line\n' to the stream.
Node.js
Hint
Call writeStream.write() with the exact string 'First line\n'.
3
Write the second and third lines
Write the strings 'Second line\n' and 'Third line\n' to writeStream using the write() method twice.
Node.js
Hint
Call writeStream.write() two more times with the exact strings 'Second line\n' and 'Third line\n'.
4
Close the writable stream
Call the end() method on writeStream to close the stream properly.
Node.js
Hint
Use writeStream.end() to close the stream after writing.
Practice
(1/5)
1. What is the main purpose of a Writable stream in Node.js?
easy
A. To send data piece by piece to a destination
B. To read data from a file
C. To create a server
D. To handle HTTP requests
Solution
Step 1: Understand Writable stream role
Writable streams are designed to send data to a destination in chunks.
Step 2: Compare with other options
Reading data is done by Readable streams, not Writable. Creating servers and handling HTTP requests are unrelated to Writable streams.
Final Answer:
To send data piece by piece to a destination -> Option A
Quick Check:
Writable stream = send data [OK]
Hint: Writable streams send data out chunk by chunk [OK]
Common Mistakes:
Confusing Writable with Readable streams
Thinking Writable streams read data
Mixing streams with server creation
2. Which of the following is the correct way to implement the _write method in a custom Writable stream?
easy
A. _write(chunk, encoding, callback) { callback(); }
B. _write(chunk, encoding) { return chunk; }
C. _write(chunk) { console.log(chunk); }
D. _write() { return true; }
Solution
Step 1: Recall _write method signature
The _write method must accept three parameters: chunk, encoding, and callback.
Step 2: Check callback usage
Calling callback() signals that the chunk was processed. Omitting it causes the stream to hang.
Final Answer:
_write(chunk, encoding, callback) { callback(); } -> Option A
Quick Check:
_write needs callback() [OK]
Hint: Always include callback in _write and call it [OK]
B. Missing callback parameter and not calling callback()
C. Not calling stream.end() causes error
D. _write method should be named write
Solution
Step 1: Check _write method signature
_write must have three parameters: chunk, encoding, callback.
Step 2: Check callback usage
Callback must be called to signal completion; missing callback causes stream to hang.
Final Answer:
Missing callback parameter and not calling callback() -> Option B
Quick Check:
_write needs callback param and call [OK]
Hint: Always include and call callback in _write [OK]
Common Mistakes:
Omitting callback parameter
Not calling callback inside _write
Confusing _write with write method
5. You want to create a Writable stream that collects all written chunks into a single string and logs it only when the stream ends. Which approach is correct?
hard
A. Log each chunk inside _write and ignore 'finish' event
B. Call callback only after all chunks are written, ignoring _write
C. Store chunks in a variable inside _write, call callback, then log in 'finish' event
D. Use readable stream instead of writable for collecting data
Solution
Step 1: Collect chunks inside _write
Inside _write, append each chunk to a variable and call callback to continue.
Step 2: Log combined data on 'finish' event
Listen to the 'finish' event to know when writing ends, then log the full collected string.
Final Answer:
Store chunks in a variable inside _write, call callback, then log in 'finish' event -> Option C
Quick Check:
Collect chunks + log on finish = Store chunks in a variable inside _write, call callback, then log in 'finish' event [OK]
Hint: Collect chunks in _write, log on 'finish' event [OK]