Bird
Raised Fist0
Node.jsframework~10 mins

Creating and removing directories in Node.js - Visual Walkthrough

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Creating and removing directories
Start
Call mkdir to create directory
Check if directory exists
Yes
Directory created successfully
Call rmdir to remove directory
Check if directory exists
No
Directory removed successfully
End
This flow shows creating a directory, verifying it exists, then removing it and confirming removal.
Execution Sample
Node.js
import fs from 'fs/promises';

await fs.mkdir('testDir');
console.log('Created');

await fs.rmdir('testDir');
console.log('Removed');
This code creates a directory named 'testDir', logs confirmation, then removes it and logs confirmation.
Execution Table
StepActionEvaluationResult
1Call fs.mkdir('testDir')Directory 'testDir' does not existDirectory created
2Log 'Created'Console outputCreated
3Call fs.rmdir('testDir')Directory 'testDir' existsDirectory removed
4Log 'Removed'Console outputRemoved
5Check if 'testDir' existsDirectory does not existConfirmed removal
💡 Directory 'testDir' removed, no longer exists
Variable Tracker
VariableStartAfter mkdirAfter rmdirFinal
Directory 'testDir' existencefalsetruefalsefalse
Key Moments - 2 Insights
Why do we check if the directory exists before and after mkdir and rmdir?
Checking existence confirms that mkdir actually created the directory and rmdir actually removed it, as shown in steps 1 and 5 of the execution_table.
What happens if we try to create a directory that already exists?
fs.mkdir will throw an error if the directory exists unless options like { recursive: true } are used. This is why step 1 assumes it does not exist.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the directory existence status after step 2?
Afalse
Bunknown
Ctrue
Derror
💡 Hint
Check variable_tracker column 'After mkdir' which corresponds to step 2 logging.
At which step does the directory get removed?
AStep 1
BStep 3
CStep 4
DStep 5
💡 Hint
Look at execution_table row where fs.rmdir is called and directory is removed.
If we skip calling fs.rmdir, what would the directory existence be at the end?
Atrue
Bfalse
Cerror
Dunknown
💡 Hint
Refer to variable_tracker final state if rmdir is not called.
Concept Snapshot
Creating and removing directories in Node.js:
- Use fs.mkdir('dirName') to create a directory.
- Use fs.rmdir('dirName') to remove it.
- Always check if directory exists to avoid errors.
- Both functions return Promises; use await or .then.
- Handle errors if directory exists or is not empty.
Full Transcript
This visual execution trace shows how Node.js creates and removes directories using the fs/promises module. First, fs.mkdir is called to create a directory named 'testDir'. The code checks that the directory does not exist before creation and confirms it exists after. Then fs.rmdir removes the directory, and the code confirms it no longer exists. The variable tracker shows the directory existence changing from false to true after mkdir, then back to false after rmdir. Key moments include understanding why existence checks are important and what happens if the directory already exists. The quiz questions help reinforce understanding of the directory state at each step. This example uses modern async/await syntax for clarity and simplicity.

Practice

(1/5)
1. Which Node.js method is used to create a new directory?
easy
A. fs.createDir()
B. fs.rmdir()
C. fs.deleteDir()
D. fs.mkdir()

Solution

  1. Step 1: Understand directory creation methods

    Node.js provides fs.mkdir() to create directories.
  2. Step 2: Differentiate from removal methods

    fs.rmdir() is for removing directories, not creating.
  3. Final Answer:

    fs.mkdir() -> Option D
  4. Quick Check:

    Create directory = fs.mkdir() [OK]
Hint: Use fs.mkdir() to create folders, not fs.rmdir() [OK]
Common Mistakes:
  • Confusing fs.mkdir() with fs.rmdir()
  • Using non-existent fs.createDir()
  • Trying to use fs.deleteDir() which doesn't exist
2. Which of the following is the correct syntax to create a nested directory parent/child in Node.js?
easy
A. fs.mkdir('parent/child', callback)
B. fs.mkdir('parent/child', { recursive: true }, callback)
C. fs.rmdir('parent/child', { recursive: true }, callback)
D. fs.mkdir('parent/child', { nested: true }, callback)

Solution

  1. Step 1: Recognize recursive option for nested folders

    To create nested directories, use { recursive: true } option with fs.mkdir().
  2. Step 2: Confirm correct method and options

    fs.mkdir with recursive true creates all needed folders; fs.rmdir is for removal, and nested option doesn't exist.
  3. Final Answer:

    fs.mkdir('parent/child', { recursive: true }, callback) -> Option B
  4. Quick Check:

    Nested folders need recursive: true [OK]
Hint: Use { recursive: true } with fs.mkdir for nested folders [OK]
Common Mistakes:
  • Omitting recursive option for nested directories
  • Using fs.rmdir instead of fs.mkdir
  • Using incorrect option name like nested
3. What will happen if you run the following code snippet in Node.js?
const fs = require('fs');
fs.rmdir('myFolder', (err) => {
  if (err) console.log('Error:', err.message);
  else console.log('Folder removed');
});

Assuming myFolder contains files.
medium
A. Folder is removed successfully
B. Code throws a syntax error
C. Error logged because folder is not empty
D. Folder is renamed instead of removed

Solution

  1. Step 1: Understand fs.rmdir behavior

    fs.rmdir only removes empty directories; if folder has files, it throws an error.
  2. Step 2: Analyze error handling in callback

    The callback logs error message if removal fails due to non-empty folder.
  3. Final Answer:

    Error logged because folder is not empty -> Option C
  4. Quick Check:

    Non-empty folder removal = error [OK]
Hint: fs.rmdir fails if folder has files; must delete files first [OK]
Common Mistakes:
  • Assuming fs.rmdir removes non-empty folders
  • Expecting folder rename instead of removal
  • Thinking code throws syntax error
4. Identify the error in this code snippet that tries to remove a directory:
const fs = require('fs');
fs.rmdir('testDir', { recursive: true }, (err) => {
  if (err) throw err;
  console.log('Directory removed');
});
medium
A. fs.rmdir does not support recursive option
B. Callback function is missing
C. fs.rmdir cannot remove directories
D. Directory path must be absolute

Solution

  1. Step 1: Check fs.rmdir method options

    fs.rmdir does not support the recursive option; fs.rm should be used instead for recursive removal.
  2. Step 2: Understand correct method for recursive removal

    Use fs.rm with { recursive: true } to remove non-empty directories recursively.
  3. Final Answer:

    fs.rmdir does not support recursive option -> Option A
  4. Quick Check:

    Recursive removal needs fs.rm, not fs.rmdir [OK]
Hint: Use fs.rm for recursive removal, not fs.rmdir [OK]
Common Mistakes:
  • Using recursive option with fs.rmdir
  • Thinking callback is missing
  • Believing directory path must be absolute
5. You want to create a nested directory projects/app/src and then remove it completely including all files inside. Which sequence of Node.js methods should you use?
hard
A. Use fs.mkdir with { recursive: true } to create, then fs.rm with { recursive: true, force: true } to remove
B. Use fs.mkdir without options to create, then fs.rmdir to remove
C. Use fs.mkdir with { recursive: true } to create, then fs.rmdir to remove
D. Use fs.mkdir to create, then fs.unlink to remove

Solution

  1. Step 1: Create nested directories

    Use fs.mkdir with { recursive: true } to create nested folders in one step.
  2. Step 2: Remove directory with all contents

    Use fs.rm with { recursive: true, force: true } to delete directory and all files inside safely.
  3. Final Answer:

    Use fs.mkdir with { recursive: true } to create, then fs.rm with { recursive: true, force: true } to remove -> Option A
  4. Quick Check:

    Nested create + recursive remove = fs.mkdir + fs.rm [OK]
Hint: Create nested with mkdir recursive, remove all with rm recursive force [OK]
Common Mistakes:
  • Using fs.rmdir to remove non-empty directories
  • Omitting recursive option when creating nested folders
  • Using fs.unlink which deletes files, not folders