How to get the name of all the files in a directory using Node.js?
Tags: node
Published: 2020-12-12 00:00:00

---
  title: How to get the name of all the files in a directory using Node.js?
  published: true
  tags: Nodejs
  date: Sat Dec 12 2020 05:30:00 GMT+0530 (India Standard Time)
  canonical_url: https://melvingeorge.me/blog/get-name-of-all-files-directory-nodejs
  cover_image: https://melvingeorge.me/_next/static/images/main-f55e7dab29c4be3d5d408e93c441a0e6.webp
  ---
  [Originally posted here!](https://melvingeorge.me/blog/get-name-of-all-files-directory-nodejs)
  
To get the name of all the files from a directory in nodejs, we can use the `readdirSync()` or `readdir()` functions from the native filesystem (`fs`) module in Node.js.

```js
/* Get name of files in a directory */
const fileNames = readdirSync("myFolder");
```

- The `readdirSync()` function is used to synchronously read the files which further blocks the execution of code in Nodejs.
- The `readdir()` function is used to asynchronously read the files in Node.js.

For example, Let's say we have 20 files in a folder or directory called `myFiles` and we need to get all the names of files in that folder.

First thing we have to do is `require()` or `import` the `filesystem` module like this,

```js
// get filesystem module
const fs = require("fs");
```

### Using readdirSync() - Synchronous function

Now we can use the `readdirSync()` function from the `fs` module and pass the path of the directory.

It can be done like this,

```js
// get filesystem module
const fs = require("fs");

// using the readdirSync() function
// and passing the path of the directory as argument
const fileNames = fs.readdirSync("myFiles");

console.log(fileNames);

/*
[
  'file_1.txt',  'file_10.txt',
  'file_11.txt', 'file_12.txt',
  'file_13.txt', 'file_14.txt',
  'file_15.txt', 'file_16.txt',
  'file_17.txt', 'file_18.txt',
  'file_19.txt', 'file_2.txt',
  'file_20.txt', 'file_3.txt',
  'file_4.txt',  'file_5.txt',
  'file_6.txt',  'file_7.txt',
  'file_8.txt',  'file_9.txt'
]

*/
```

- The `readdirSync()` function returns an array of file names.
- Since the `myFiles` directory is in the same folder as the running script, we don't need to resolve the path. But sometimes you need to resolve the path because the directory and the script may not be in the same directory, for that you can use the [`path`](https://nodejs.org/api/path.html) module in Node.js to achieve that.

See this example live in [repl.it](https://repl.it/@melvin2016/get-all-file-names-in-directory-nodejs#index.js).

### Using readdir() - Asynchronous function

Now let's use the `readdir()` function from the `fs` module.

Here the function needs 2 arguments,

- The First argument is the path to the directory
- The second one is an error first callback function which will get executed when all the names of the files are read. The callback function receives an `error` object as the first parameter if any, and an array of filenames as the second parameter.

It can be done like this,

```js
// get filesystem module
const fs = require("fs");

// using the readdir() function
// and passing the path to the directory
// as the first argument
// callback function to execute after file read
// as the second argument
fs.readdir("myFiles", (err, fileNames) => {
  // if any error
  if (err) {
    console.error(err);
    return;
  }

  // otherwise show the filenames
  console.log(fileNames);

  /*
[
  'file_1.txt',  'file_10.txt',
  'file_11.txt', 'file_12.txt',
  'file_13.txt', 'file_14.txt',
  'file_15.txt', 'file_16.txt',
  'file_17.txt', 'file_18.txt',
  'file_19.txt', 'file_2.txt',
  'file_20.txt', 'file_3.txt',
  'file_4.txt',  'file_5.txt',
  'file_6.txt',  'file_7.txt',
  'file_8.txt',  'file_9.txt'
]

*/
});
```

See this example live in [repl.it](https://repl.it/@melvin2016/get-all-file-names-in-directory-nodejs#index.js).

And this is how we get all our file names from a directory.

### Feel free to share if you found this useful 😃.

---