Writing Files
Remember writing in your diary? You open it, write your thoughts, and close it. In Node.js, writing files is similar – you create or open a file, write content to it, and save it. Let's learn how to write files!
Writing Files in Node.js
Node.js provides several methods to write files:
- fs.writeFile() – Write (overwrites if file exists)
- fs.appendFile() – Add to end of file (preserves existing content)
- fs.writeFileSync() – Synchronous version
- Promises API – Modern async/await style
Think of `writeFile` as writing a new page in your diary – it replaces everything. `appendFile` is like adding a new line at the bottom – it keeps what you already wrote.
1. Asynchronous Writing (fs.writeFile)
const fs = require('fs');
const content = 'Hello, this is my first file created with Node.js!';
fs.writeFile('message.txt', content, 'utf8', (err) => { if (err) { console.error('Error writing file:', err); return; } console.log('File written successfully!');});2. Synchronous Writing (fs.writeFileSync)
const fs = require('fs');
try { fs.writeFileSync('sync-message.txt', 'Synchronous write'); console.log('File written synchronously');} catch (err) { console.error('Error:', err);}3. Appending to Files (fs.appendFile)
Use `appendFile` to add content to the end of a file without deleting existing content.
fs.appendFile('log.txt', 'New log entryn', (err) => { if (err) { console.error('Error appending:', err); return; } console.log('Log entry added');});4. Promise-based Writing (Modern)
const fs = require('fs').promises;
async function writeData() { try { await fs.writeFile('data.txt', 'Important data'); console.log('File written'); <!-- Append more data --> await fs.appendFile('data.txt', 'nMore data'); console.log('Data appended'); } catch (err) { console.error('Error:', err); }}
writeData();Writing JSON Files
A very common task is writing JSON data to files.
const fs = require('fs').promises;
const userData = { name: 'John Doe', email: 'john@example.com', age: 30, hobbies: ['reading', 'coding', 'gaming']};
async function saveUser() { try { <!-- Convert object to JSON string with pretty formatting --> const jsonData = JSON.stringify(userData, null, 2); await fs.writeFile('user.json', jsonData); console.log('User data saved!'); } catch (err) { console.error('Error saving user:', err); }}
saveUser();Writing with Options
You can pass options to control file writing behavior.
<!-- Options: flag 'a' for append, 'wx' for exclusive write (fail if exists) -->fs.writeFile('important.txt', 'Secret data', { flag: 'wx' }, (err) => { if (err) { if (err.code === 'EEXIST') { console.log('File already exists!'); } else { console.error(err); } return; } console.log('File created successfully');});Error Handling in File Writing
Common errors when writing files:
- EACCES: Permission denied
- ENOSPC: No space left on device
- EISDIR: Path is a directory, not a file
- EEXIST: File already exists (with 'wx' flag)
fs.writeFile('/root/secret.txt', 'data', (err) => { if (err) { if (err.code === 'EACCES') { console.log('Permission denied. Run with appropriate privileges.'); } else { console.error('Write error:', err.message); } return; } console.log('File written');});Practical Example: Logger
const fs = require('fs').promises;const path = require('path');
async function logMessage(message) { try { const logFile = path.join(__dirname, 'app.log'); const timestamp = new Date().toISOString(); const logEntry = `[${timestamp}] ${message}n`; await fs.appendFile(logFile, logEntry); console.log('Logged:', message); } catch (err) { console.error('Failed to write log:', err); }}
logMessage('Application started');logMessage('User logged in');Two Minute Drill
- Use `fs.writeFile()` to create/overwrite files asynchronously.
- Use `fs.appendFile()` to add content to existing files.
- For JSON data, use `JSON.stringify()` before writing.
- The 'wx' flag prevents overwriting existing files.
- Always handle write errors – disk full, permission denied, etc.
- Use `fs.promises` for cleaner async/await code.
Need more clarification?
Drop us an email at career@quipoinfotech.com
