Node.js fs.readdirSync() Method
Last Updated :
15 Apr, 2025
The fs.readdirSync() method is used to synchronously read the contents of a given directory. The method returns an array with all the file names or objects in the directory. The options argument can be used to change the format in which the files are returned from the method.
Syntax
fs.readdirSync( path, options )
Parameters: This method accept two parameters as mentioned above and described below:
- path: It holds the path of the directory from where the contents have to be read. It can be a String, Buffer or URL.
- options: It is an object that can be used to specify optional parameters that will affect the method. It has two optional parameters:
- encoding: It is a string value which specifies which encoding would be used for the filenames given to the callback argument. The default value is ‘utf8’.
- withFileTypes: It is a boolean value which specifies whether the files would be returned as fs.Dirent objects. The default value is ‘false’.
Returns: It returns an array of String.
- If withFileTypes is false or not specified: An array of filenames as strings.
- If withFileTypes is true: An array of fs.Dirent objects representing the directory entries.
Features
- Synchronous Execution: fs.readdirSync() is blocking, meaning it halts the execution of subsequent code until the directory contents are read. This is useful when you need to ensure that directory contents are fully read before proceeding.
- Array Output: Returns an array of strings, each representing a file or directory name in the specified directory.
- Optional Encoding: You can specify the encoding (e.g., ‘utf8’) if you need the results in a specific format.
Below examples illustrate the fs.readdirSync() method in Node.js:
Example 1: This example uses fs.readdirSync() method to return the file names or file objects in the directory.
JavaScript
// Filename - index.js
// Node.js program to demonstrate the
// fs.readdirSync() method
onst fs = require('fs');
// Function to get current filenames
// in the directory
let filenames = fs.readdirSync(__dirname);
console.log("\nCurrent directory filenames:");
filenames.forEach(file => {
console.log(file);
});
// Function to get current filenames
// in the directory with "withFileTypes"
// set to "true"
let fileObjs = fs.readdirSync(__dirname, { withFileTypes: true });
console.log("\nCurrent directory files:");
fileObjs.forEach(file => {
console.log(file);
});
Output:
Current directory filenames:
CONTRUBUTIONS.txt
index.html
index.js
package.json
README.md
Current directory files:
Dirent { name: 'CONTRUBUTIONS.txt', [Symbol(type)]: 1 }
Dirent { name: 'index.html', [Symbol(type)]: 1 }
Dirent { name: 'index.js', [Symbol(type)]: 1 }
Dirent { name: 'package.json', [Symbol(type)]: 1 }
Dirent { name: 'README.md', [Symbol(type)]: 1 }
Example 2: This example uses fs.readdirSync() method to return only the filenames with the “.md” extension.
JavaScript
// Filename - index.js
// Node.js program to demonstrate the
// fs.readdirSync() method
// Import the filesystem module
const fs = require('fs');
const path = require('path');
// Function to get current filenames
// in directory with specific extension
files = fs.readdirSync(__dirname);
console.log("\nFilenames with the .md extension:");
files.forEach(file => {
if (path.extname(file) == ".md")
console.log(file);
})
Output:
Filenames with the .md extension:
README.md
Handling Errors in fs.readdir()
Issues such as incorrect directory paths, insufficient permissions, or inaccessible files can cause errors when using the fs.readdirSync() method. Below are examples of how to handle such errors.
Example:
JavaScript
const fs = require('fs');
// Attempt to read the contents of a non-existent directory
fs.readdir('/invalid/path', (error, fileList) => {
if (error) {
// Log the error message if the directory does not exist
console.error("Error reading directory:", error.message);
} else {
// Log the directory contents if no error occurs
console.log("Files:", fileList);
}
});
Output:
Error reading directory: ENOENT: no such file or directory, scandir 'C:\invalid\path'
Handling Permission Issues
If the application does not have permission to read a directory, it will throw a permission error. Here’s how you can handle it:
JavaScript
const fs = require('fs');
// Attempt to read a directory without sufficient permissions
fs.readdir('/restricted/path', (error, fileList) => {
if (error) {
// Log the permission error
console.error("Permission error:", error.message);
} else {
// Log the directory contents if no error occurs
console.log("Files:", fileList);
}
});
Output:
Permission error: ENOENT: no such file or directory, scandir 'C:\restricted\path'
Conclusion
The fs.readdirSync() method is a powerful tool for synchronously reading the contents of a directory in Node.js. It’s particularly useful when you need to ensure that directory reading is completed before proceeding with the next steps in your code. While it should be used with caution in scenarios where blocking operations might affect performance, it’s an excellent choice for simple tasks and scripts that require immediate and reliable access to directory contents.
Similar Reads
Node JS fs.readFile() Method
âIn Node.js, the fs.readFile() method is a fundamental tool for reading files asynchronously, allowing your application to remain responsive while accessing file data. This method is part of Node.js's File System (fs) module, which provides an API for interacting with the file system. Syntaxfs.readF
4 min read
Node.js fs.exists() Method
The fs exists method in node is used to check if the input file or the directory exists or not. It is an inbuilt application programming interface of fs module which provides an API for interacting with the file system in a manner closely modeled around POSIX functions. Syntax:fs.exists( path, callb
2 min read
Node fs.existsSync() Method
In Node.js, the fs.existsSync() method checks if a file or folder exists at a given path. It's synchronous, meaning it pauses the program until it finds the result (either true if it exists, or false if it doesn't). Because it stops everything while it works, itâs best used for quick checks in small
3 min read
Node fs.mkdir() Method
The fs.mkdir() method in Node.js is used to create a directory asynchronously. Syntax fs.mkdir(path, mode, callback)Parameters: This method accepts three parameters as mentioned above and described below: path: This parameter holds the path of the directory that has to be created.mode: This paramete
2 min read
Node.js fs.truncate() Method
The fs.truncate() method in node.js is used to change the size of the file i.e either increase or decrease the file size. This method changes the length of the file at the path by len bytes. If len represents a length shorter than the file's current length, the file is truncated to that length. If i
2 min read
Node.js fs.renameSync() Method
In Node.js, the fs.renameSync() method is part of the built-in File System (fs) module and is used to rename or move files and directories synchronously. This method is useful when you need to quickly change a file's name or move it to a different directory synchronously. It blocks the execution of
3 min read
Node.js fs.rmdir() Method
The fs.rmdir() method is used to delete a directory at the given path. It can also be used recursively to remove nested directories. Syntax: fs.rmdir( path, options, callback )Parameters: This method accepts three parameters as mentioned above and described below: path: It holds the path of the dire
3 min read
Node.js fs.stat() Method
The fs.stat() method is used to return information about the given file or directory. It returns an fs.Stat object which has several properties and methods to get details about the file or directory. Syntax:fs.stat( path, options, callback )Parameters: This method accept three parameters as mentione
3 min read
Node.js fs.mkdtempSync() Method
The fs.mkdtempSync() method is an inbuilt application programming interface of fs module which provides an API for interacting with the file system in a manner closely modeled around standard POSIX functions. The fs.mkdtempSync() method creates a unique temporary directory. This is the synchronous v
2 min read
Node.js fs.realpath() Method
The fs.realPath() method is used to compute the canonical pathname of the given path. It does so by resolving the ., .. and the symbolic links in the path. Syntax: fs.realpath( path, options, callback ) Parameters: This method accept three parameters as mentioned above and described below: path: It
3 min read