/

Working with folders in Node: A Guide

Working with folders in Node: A Guide

Learn how to interact with folders using Node.js and the fs core module. Discover methods for checking if a folder exists, creating a new folder, reading the content of a directory, renaming a folder, and removing a folder.

Check if a folder exists

To check if a folder exists and if Node.js has access to it, use the fs.access() method.

1
2
3
4
5
6
7
8
9
10
11
12
const fs = require('fs');

const folderPath = '/path/to/folder';

fs.access(folderPath, (err) => {
if (err) {
console.error('Folder does not exist or cannot be accessed.');
return;
}

console.log('Folder exists and can be accessed.');
});

Create a new folder

To create a new folder, use either the fs.mkdir() or fs.mkdirSync() method.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const fs = require('fs');

const folderPath = '/path/to/new/folder';

try {
if (!fs.existsSync(folderPath)) {
fs.mkdirSync(folderPath);
console.log('Folder created successfully.');
} else {
console.error('Folder already exists.');
}
} catch (err) {
console.error(err);
}

Read the content of a directory

To read the contents of a directory, including files and subfolders, use either the fs.readdir() or fs.readdirSync() method.

This code reads the content of a folder and returns the relative path of each file and subfolder.

1
2
3
4
5
6
7
const fs = require('fs');
const path = require('path');

const folderPath = '/path/to/folder';

const content = fs.readdirSync(folderPath);
console.log(content);

To get the full path of each file and subfolder, use path.join().

1
2
3
4
5
const content = fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName);
});

console.log(content);

To filter the results and only return files (excluding folders), you can use the isFile() method provided by the fs module.

1
2
3
4
5
6
7
8
9
const isFile = fileName => {
return fs.lstatSync(fileName).isFile();
};

const content = fs.readdirSync(folderPath)
.map(fileName => path.join(folderPath, fileName))
.filter(isFile);

console.log(content);

Rename a folder

To rename a folder, use either the fs.rename() or fs.renameSync() method. Pass the current path as the first parameter and the new path as the second parameter.

1
2
3
4
5
6
7
8
9
10
11
12
13
const fs = require('fs');

const currentPath = '/path/to/current/folder';
const newPath = '/path/to/new/folder';

fs.rename(currentPath, newPath, err => {
if (err) {
console.error(err);
return;
}

console.log('Folder renamed successfully.');
});

The fs.renameSync() method can be used for synchronous renaming.

1
2
3
4
5
6
try {
fs.renameSync(currentPath, newPath);
console.log('Folder renamed successfully.');
} catch (err) {
console.error(err);
}

Remove a folder

To remove a folder, use either the fs.rmdir() or fs.rmdirSync() method.

1
2
3
4
5
6
7
8
9
10
11
12
const fs = require('fs');

const folderPath = '/path/to/folder';

fs.rmdir(folderPath, err => {
if (err) {
console.error(err);
return;
}

console.log('Folder removed successfully.');
});

Please note that removing a folder with content can be more complicated. If you need advanced features, it is recommended to use the popular and well-maintained fs-extra module. The remove() method from fs-extra provides additional functionality on top of the fs module.

To use fs-extra, install it via NPM:

1
npm install fs-extra

Then, you can remove a folder using fs.remove().

1
2
3
4
5
6
7
8
9
10
11
12
const fs = require('fs-extra');

const folderPath = '/path/to/folder';

fs.remove(folderPath, err => {
if (err) {
console.error(err);
return;
}

console.log('Folder removed successfully.');
});

Alternatively, you can use promises or async/await with fs-extra.

1
2
3
4
5
6
7
fs.remove(folderPath)
.then(() => {
console.log('Folder removed successfully.');
})
.catch(err => {
console.error(err);
});
1
2
3
4
5
6
7
8
9
10
async function removeFolder(folderPath) {
try {
await fs.remove(folderPath);
console.log('Folder removed successfully.');
} catch (err) {
console.error(err);
}
}

removeFolder(folderPath);

tags: [“Node.js”, “folders”, “file system”, “fs module”]