Read, Write, Update and Delete files in Node.js (File Systems)
We use the fs
module in Nodejs which allows you to work with the file systems on your computer.
You just Nodejs installed on your computer because fs
module is part of the Nodejs core.
Read Files
You can read files from your nodejs application using fs.readFile
and fs.readFileSync
(for synchronous form) methods.
Examples for reading files:
We can read files a non-blocking asynchronously by fs.readFile
or in synchronous way with fs.readFileSync
.
Synchronous example
syntax for readFileSync
is:
fs.readFileSync( path, options )
where path takes the relative path of the text file and options are the optional parameters like encoding and flag, you can refer more from readFileSync options
// create textFile.txt on the same folder with the below function
// reading textFile.txt
const fs = require('fs');
try {
const fileFetched = fs.readFileSync('./textFile.txt', {
encoding: 'utf8',
flag: 'r',
});
// display data fetched
console.log(fileFetched);
} catch (error) {
console.log(error);
}
Asynchronous example
syntax for readFile
is:
fs.readFile(path, options, callback)
More details about the parameters are available in fs.readFile
const fs = require('fs');
fs.readFile('./textFile.txt', (err, data) => {
if (err) throw err;
// display data fetched
console.log(data);
});
// or
// using async await
async function fileReader() {
const data = await fs.readFile("./textFile.txt");
return new data;
}
Write Files
You can readfiles from your nodejs application using fs.writeFile
and fs.writeFileSync
(for synchronous form) methods.
Examples for reading files:
We can read files a non-blocking asynchronously by fs.writeFile
or in synchronous way with fs.writeFileSync
.
Asynchronous example
syntax for readFile
is:
fs.writeFile(path, data, options, callback)
where path takes the relative path of the text file, data takes the data that you want to store in the file, options are the optional parameters like encoding and flag, you can refer more from writefile options
const fs = require('fs')
const data = 'Hello Node.js';
fs.writeFile('message.txt', data, (err) => {
if (err) throw err;
console.log('The file has been saved!');
//file written successfully
});
// or
// using async await
async function fileWriter() {
const data = await fs.writeFile("./textFile.txt");
return new data;
}
synchronous example
syntax for writeFileSync
is:
fs.writeFileSync(path, data, options, callback)
More details about the parameters are available in fs.writeFileSync
const fs = require('fs')
const content = 'Some content!'
try {
fs.writeFileSync('/Users/joe/test.txt', content)
//file written successfully
} catch (err) {
console.error(err)
}
The flags you’ll likely use are:
- r+ open the file for reading and writing
- w+ open the file for reading and writing, positioning the stream at the beginning of the file. The file is created if it does not exist
- a open the file for writing, positioning the stream at the end of the file. The file is created if it does not exist
- a+ open the file for reading and writing, positioning the stream at the end of the file. The file is created if it does not exist
you can find more flags at Nodejs Write Flags
Append to a file
A handy method to append content to the end of a file is fs.appendFile()
(and its fs.appendFileSync()
counterpart):
const fs = require('fs')
const content = 'Some content!'
fs.appendFile('file.log', content, err => {
if (err) {
console.error(err)
return
}
//done!
})
Delete a File
Node offers a synchronous method, and an asynchronous method through the fs built-in module.
The asynchronous one is fs.unlink()
.
const fs = require('fs')
const path = './file.txt'
try {
fs.unlinkSync(path)
//file removed
} catch(err) {
console.error(err)
}
The synchronous one is fs.unlinkSync()
.
const fs = require('fs')
const path = './file.txt'
fs.unlink(path, (err) => {
if (err) {
console.error(err)
return
}
//file removed
})
Wrapping up
Volla, we have successfully create, read, updated and delete the files successfully using Nodejs. Learn the difference between Asynchronous and Synchronous programming in JavaScript in this post
If you have any questions drop them in the comment section of this tweet.
Thanks for reading, cheers 🥂