Working with folders in Node
How to interact with folders using Node
THE AHA STACK MASTERCLASS
Launching May 27th
The Node.js fs
core module provides many handy methods you can use to work with folders.
Check if a folder exists
Use fs.access()
to check if the folder exists and Node can access it with its permissions.
Create a new folder
Use fs.mkdir()
or fs.mkdirSync()
to create a new folder.
const fs = require('fs')
const folderName = '/Users/flavio/test'
try {
if (!fs.existsSync(dir)){
fs.mkdirSync(dir)
}
} catch (err) {
console.error(err)
}
Read the content of a directory
Use fs.readdir()
or fs.readdirSync
to read the contents of a directory.
This piece of code reads the content of a folder, both files and subfolders, and returns their relative path:
const fs = require('fs')
const path = require('path')
const folderPath = '/Users/flavio'
fs.readdirSync(folderPath)
You can get the full path:
fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName)
}
You can also filter the results to only return the files, and exclude the folders:
const isFile = fileName => {
return fs.lstatSync(fileName).isFile()
}
fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName)
}).filter(isFile)
Rename a folder
Use fs.rename()
or fs.renameSync()
to rename folder. The first parameter is the current path, the second the new path:
const fs = require('fs')
fs.rename('/Users/flavio', '/Users/roger', err => {
if (err) {
console.error(err)
return
}
//done
})
fs.renameSync()
is the synchronous version:
const fs = require('fs')
try {
fs.renameSync('/Users/flavio', '/Users/roger')
} catch (err) {
console.error(err)
}
Remove a folder
Use fs.rmdir()
or fs.rmdirSync()
to remove a folder.
Removing a folder that has content can be more complicated than you need.
In this case I recommend installing the fs-extra
module, which is very popular and well maintained, and itβs a drop-in replacement of the fs
module, providing more features on top of it.
In this case the remove()
method is what you want.
Install it using
npm install fs-extra
and use it like this:
const fs = require('fs-extra')
const folder = '/Users/flavio'
fs.remove(folder, err => {
console.error(err)
})
It can also be used with promises:
fs.remove(folder).then(() => {
//done
}).catch(err => {
console.error(err)
})
or with async/await:
async function removeFolder(folder) {
try {
await fs.remove(folder)
//done
} catch (err) {
console.error(err)
}
}
const folder = '/Users/flavio'
removeFolder(folder)
I wrote 20 books to help you become a better developer:
- Astro Handbook
- HTML Handbook
- Next.js Pages Router Handbook
- Alpine.js Handbook
- HTMX Handbook
- TypeScript Handbook
- React Handbook
- SQL Handbook
- Git Cheat Sheet
- Laravel Handbook
- Express Handbook
- Swift Handbook
- Go Handbook
- PHP Handbook
- Python Handbook
- Linux Commands Handbook
- C Handbook
- JavaScript Handbook
- CSS Handbook
- Node.js Handbook