Node.js
In this tutorial we will learn to write data in file in Node.js using fs module.
fs
moduleThe fs
module helps in interacting with the file system and provides operations that are available in synchronous, callback and promise-based forms.
Read the following tutorial to learn How to read file in Node.js using fs module.
To write data in file in sync mode we use the writeFileSync
method.
The writeFileSync
takes three parameters.
const fs = require('fs');
const file = '/Users/yusufshakeel/node-project/example.txt';
console.log('Writing file');
fs.writeFileSync(file, 'Hello World', 'utf8');
console.log('Writing done!');
In the above code we are writing the content Hello World
to file example.txt
using utf8 encoding.
The writeFileSync
method returns undefined.
Let's try to modify the above code to also read the content that we wrote in the file.
const fs = require('fs');
const file = '/Users/yusufshakeel/node-project/example.txt';
console.log('Writing file');
fs.writeFileSync(file, 'Hello World', 'utf8');
console.log('Writing done!');
console.log('Reading content:');
const content = fs.readFileSync(file, 'utf8');
console.log(content);
console.log('Reading done!');
Output:
Writing file
Writing done!
Reading content:
Hello World
Reading done!
To catch error for the above code we can wrap it in try-catch block like the following.
The following code will throw error.
const fs = require('fs');
try {
const file = '/Users/yusufshakeel/node-project/example.txt';
console.log('Writing file');
fs.writeFileSync(file, {}, 'utf8');
console.log('Writing done!');
console.log('Reading content:');
const content = fs.readFileSync(file, 'utf8');
console.log(content);
console.log('Reading done!');
} catch (e) {
console.log('ERROR:');
console.log(e.message);
}
Output:
Writing file
ERROR:
The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received an instance of Object
To write data asynchronously we use the writeFile
method.
It takes four parameters.
In the following code we are writing data asynchronously.
const fs = require('fs');
const file = '/Users/yusufshakeel/node-project/example.txt';
console.log('Writing file');
fs.writeFile(file, 'Hello World', 'utf8', err => {
if (err) {
console.log('ERROR:')
console.log(err.message);
} else {
console.log('Writing done!');
console.log('Reading content:');
const content = fs.readFileSync(file, 'utf8');
console.log(content);
console.log('Reading done!');
}
});
Output
Writing file
Writing done!
Reading content:
Hello World
In the above code we are writing Hello World
in utf8 encoding inside example.txt
file. If there is no error and the writing is done then the else
block will get executed.
If any error is present in the err
parameter then the if
block will get executed which will console log the error message.
The fs.promises
API provides async file system methods that returns Promise object rather than callbacks.
So, when the promise gets resolved the code inside the then
block will be executed. If error occurs then catch
block will be executed.
const fs = require('fs').promises;
const file = '/Users/yusufshakeel/node-project/example.txt';
fs.writeFile(file, 'Hello World', 'utf8')
.then(err => {
console.log('Writing done!');
})
.catch(err => {
console.log('ERROR:');
console.log(err.message);
});
Let's modify the above code to also print the content that was written in the file.
const fs = require('fs').promises;
const file = '/Users/yusufshakeel/node-project/example.txt';
fs.writeFile(file, 'Hello World', 'utf8')
.then(err => {
console.log('Writing done!');
})
.then(() => fs.readFile(file, 'utf8'))
.then(data => {
console.log('Content:');
console.log(data);
})
.catch(err => {
console.log('ERROR:');
console.log(err.message);
});
In the above code we will first write the content in the file. Once the writing completes the first then
block will be executed and it will console log Writing done!
.
After that the second then
block is executed. Inside it we are reading the content of the file using readFile which is async. So, we will process it in the third then
block.
Once the readFile is done reading and the promise is resolved the third then
block will be executed. It will console log the content of the file.
In case writeFile
or readFile
promise gets rejected then the catch
block will be considered and the code inside it will be executed.
Alright, this brings us to the end of this tutorial. Don't forget to practice. Thanks for reading. Please share if this was helpful. See you in the next tutorial.
ADVERTISEMENT