Hi, I'm Subham Maity, a software engineer. I also enjoy teaching others how to code through my tutorials. I'm always eager to learn new things and share my knowledge with the community.
⚡ I recently wrote an article on Efficiently Listing Files using the File System Module in Node.js and wanted to share it with you all. You can find the article on my website https://codexam.vercel.app/docs/node/node1 [Better View]
⚡ I also have a repository on GitHub where you can find all the code and projects related to this topic. You can find the repository at https://github.com/Subham-Maity/node-js-full-stack-tutorial
❗ For a more in-depth look at this topic, including a detailed table of contents, check out the complete tutorial on my GitHub Repo
If you want to stay updated with my latest projects and articles, you can follow me on:
Creating files dynamically in a folder is a common task in web development, and Node.js offers an easy way to achieve this using the fs module. In this article, we will explore how to create files in a folder using Node.js.
⭐ Files Creation
Problem Statement : Make files in a folder
- Create a folder named
files
in the root directory of your project.
making a simple file is very easy just use the fs module and call the writeFileSync method and pass the file name and the data you want to write in the file as the parameters.
const fs = require('fs');
fs.writeFileSync('hello.txt', 'Hello World!');
- Now do like this
const fs = require('fs');
const path = require('path');
const dirPath = path.join(__dirname, 'files');//__dirname will give the current directory name and files is the folder name
//console.warn(dirPath);//this will print the path of the folder
for (i = 0; i < 10; i++) {
//fs.writeFileSync("hello.txt", "Hello World!");
//this will create a file named hello.txt in the root directory and overwrite it if it already exists
//So we need to add dirPath in the file name and make it dynamic like text1.txt,text2.txt,text3.txt etc
fs.writeFileSync(dirPath + `/file${i}.txt`, `Hello World! ${i}`);
//fs.writeFileSync(dirPath + `/file'+i+'.txt`, `Hello World!`+i);//this will also work
}
Now run
node index.js
and check thefiles
folder. You should see 10 files with the namesfile0.txt
tofile9.txt
and the contentsHello World! X
, where X is the current value ofi
.
Code Explanation
Step 1
const fs = require('fs');
- The
fs
module is used to interact with the file system in Node.js.
Step 2
const path = require('path');
- The
path
module provides utilities for working with file and directory paths.
Step 3
const dirPath = path.join(__dirname, 'files');
The
__dirname
variable is a special variable in Node.js that represents the directory name of the current module.The
path.join()
method joins all given path segments together using the platform-specific separator as a delimiter, then normalizes the resulting path.In this case, we're joining the current directory name with a subdirectory called "files".
Step 4
for (i = 0; i < 10; i++) {
- This is a
for
loop that will run 10 times.
Step 5
fs.writeFileSync(dirPath + /file${i}.txt, Hello World! ${i});
The
fs.writeFileSync()
method writes data to a file, replacing the file if it already exists.In this case, we're writing a file to the "files" subdirectory with a filename of "fileX.txt", where X is the current value of
i
.The contents of each file will be "Hello World! X", where X is the current value of
i
.
Problem Statement : We need to see the files in the folder
3 . We are going to use readdir
fs.readdir(dirPath, (err, files) => {
if (err) {
console.error(err);
return;
}
console.warn(files);
});
Output
[ 'file0.txt',
'file1.txt',
'file2.txt',
'file3.txt',
'file4.txt',
]
Code Explanation
fs.readdir(dirPath, (err, files)
- The fs.readdir()
method reads the contents of a directory.
In this case, we're reading the contents of the "files" subdirectory.
The
files
parameter is an array of filenames in the directory.The
err
parameter is an error object if an error occurred, ornull
if no error occurred
console.warn(files);
- This will print the array of filenames to the console.
Problem Statement : We don't want to see the files in the array format
- We are going to use the forEach method to iterate over the array and print the files
forEach is a method that is used to iterate over an array.
Syntax
arr.forEach(abc => {
console.warn(abc);
});
or
arr.forEach((abc, index) => {
console.warn(index, abc);
});
fs.readdir(dirPath, (err, files) => {
if (err) {
console.error(err);
return;
}
files.forEach(file => {
console.warn(file);
});
});
or
fs.readdir(dirPath, (err, files) => {
if (err) {
console.error(err);
return;
}
files.forEach((file, index) => {
console.warn(index, file);
});
});
Output
file0.txt
file1.txt
file2.txt
file3.txt
...this will go on
Code Explanation
files.forEach(file => {
- This is a forEach
loop that will iterate over the array of filenames.
console.warn(file);
- This will print the filename to the console.