Bird
Raised Fist0
Node.jsframework~10 mins

path.extname for file extensions in Node.js - Step-by-Step Execution

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 - path.extname for file extensions
Input: file path string
Find last '.' in string
If '.' found and not last char
Extract substring from '.' to end
Return file extension
The function takes a file path string, finds the last dot, and returns the substring from that dot to the end as the file extension. If no dot or dot is last, it returns an empty string.
Execution Sample
Node.js
const path = require('path');
const ext = path.extname('folder/file.txt');
console.log(ext);
This code extracts the file extension from 'folder/file.txt' and prints it.
Execution Table
StepInput StringActionResultOutput
1'folder/file.txt'Find last '.'Index 11
2Index 11Check if '.' is last charNo, last char index 14
3Index 11Extract substring from '.' to end'.txt'
4'.txt'Return extension'.txt''.txt'
5'folder/file'Find last '.'No '.' found
6No '.'Return empty string''''
7'file.'Find last '.'Index 4
8Index 4Check if '.' is last charYes, last char index 4
9'.' at endReturn empty string''''
💡 Execution stops after returning the extension or empty string depending on input.
Variable Tracker
VariableStartAfter Step 1After Step 3After Step 4After Step 6After Step 9
inputString'folder/file.txt''folder/file.txt''folder/file.txt''folder/file.txt''folder/file''file.'
lastDotIndexundefined111111-14
extension'''''.txt''.txt'''''
Key Moments - 2 Insights
Why does path.extname return an empty string when the file ends with a dot?
Because the function checks if the dot is the last character (see Step 8). If yes, it returns an empty string since no extension follows the dot.
What happens if the input string has no dot at all?
The function finds no dot (Step 5), so it returns an empty string (Step 6). This means no extension is present.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output at Step 4 for input 'folder/file.txt'?
A'.txt'
B'txt'
C''
D'.file'
💡 Hint
Check the 'Output' column at Step 4 in the execution_table.
At which step does path.extname return an empty string for input 'folder/file'?
AStep 3
BStep 9
CStep 6
DStep 1
💡 Hint
Look for the step where no '.' is found and empty string is returned.
If the input is 'file.', what does path.extname return according to the table?
A'.file'
B''
C'.'
D'file'
💡 Hint
See Steps 7-9 where the dot is last character and empty string is returned.
Concept Snapshot
path.extname(pathString)
- Finds last '.' in pathString
- Returns substring from '.' to end as extension
- Returns '' if no '.' or '.' is last char
- Useful to get file extensions
- Example: path.extname('file.txt') returns '.txt'
Full Transcript
The path.extname function takes a file path string and finds the last dot character. If a dot exists and is not the last character, it extracts and returns the substring from that dot to the end, which is the file extension. If no dot is found or the dot is the last character, it returns an empty string. For example, 'folder/file.txt' returns '.txt', 'folder/file' returns '', and 'file.' returns ''. This helps identify file extensions safely.

Practice

(1/5)
1. What does path.extname('example.txt') return in Node.js?
easy
A. '.txt'
B. 'txt'
C. 'example.txt'
D. '' (empty string)

Solution

  1. Step 1: Understand what path.extname does

    The path.extname method extracts the file extension including the dot from a filename string.
  2. Step 2: Apply to 'example.txt'

    Since the file name is 'example.txt', the extension is '.txt' including the dot.
  3. Final Answer:

    '.txt' -> Option A
  4. Quick Check:

    Extension includes dot = '.txt' [OK]
Hint: Remember extname returns extension with dot [OK]
Common Mistakes:
  • Forgetting the dot in the extension
  • Returning the whole filename
  • Returning empty string for files with extension
2. Which of the following is the correct syntax to get the extension of a file named 'photo.jpeg' using Node.js path module?
easy
A. path.extname('photo.jpeg')
B. path.extension('photo.jpeg')
C. path.getExt('photo.jpeg')
D. path.ext('photo.jpeg')

Solution

  1. Step 1: Recall the correct method name

    The Node.js path module provides the method extname to get file extensions.
  2. Step 2: Check the syntax

    The correct syntax is path.extname('filename'). Other options are invalid method names.
  3. Final Answer:

    path.extname('photo.jpeg') -> Option A
  4. Quick Check:

    Correct method is extname() [OK]
Hint: Use path.extname() exactly as named [OK]
Common Mistakes:
  • Using incorrect method names like extension or ext
  • Missing parentheses after method name
  • Confusing with other path methods
3. What will be the output of the following code?
const path = require('path');
console.log(path.extname('archive.tar.gz'));
medium
A. '.tar.gz'
B. '' (empty string)
C. 'tar.gz'
D. '.gz'

Solution

  1. Step 1: Understand how extname handles multiple dots

    The path.extname method returns the substring from the last dot to the end of the string.
  2. Step 2: Apply to 'archive.tar.gz'

    The last dot is before 'gz', so the extension returned is '.gz'.
  3. Final Answer:

    '.gz' -> Option D
  4. Quick Check:

    Extension is from last dot = '.gz' [OK]
Hint: extname returns from last dot to end [OK]
Common Mistakes:
  • Assuming it returns multiple extensions
  • Returning empty string for multiple dots
  • Including the whole suffix after first dot
4. Identify the error in this code snippet:
const path = require('path');
const ext = path.extname('document');
console.log(ext);
medium
A. It returns 'document' as extension
B. It throws an error because 'document' has no extension
C. It returns an empty string because no extension exists
D. It returns undefined

Solution

  1. Step 1: Check the filename for extension

    The filename 'document' has no dot, so no extension exists.
  2. Step 2: Understand extname behavior with no extension

    path.extname returns an empty string when no extension is found, not an error or undefined.
  3. Final Answer:

    It returns an empty string because no extension exists -> Option C
  4. Quick Check:

    No dot means empty string [OK]
Hint: No dot means extname returns empty string [OK]
Common Mistakes:
  • Expecting an error for missing extension
  • Expecting undefined instead of empty string
  • Confusing filename with extension
5. You want to filter an array of filenames to only include '.js' files. Which code snippet correctly uses path.extname to do this?
const path = require('path');
const files = ['app.js', 'index.html', 'script.ts', 'readme'];
const jsFiles = files.filter(???);
console.log(jsFiles);
hard
A. file => path.extname(file) === ''
B. file => path.extname(file) === '.js'
C. file => path.extname(file) === '.JS'
D. file => path.extname(file) === 'js'

Solution

  1. Step 1: Understand the filter condition

    We want to keep files whose extension is exactly '.js' including the dot and case-sensitive.
  2. Step 2: Use path.extname correctly

    The correct comparison is path.extname(file) === '.js'. Other options either miss the dot, use wrong case, or check for empty extension.
  3. Final Answer:

    file => path.extname(file) === '.js' -> Option B
  4. Quick Check:

    Filter by exact '.js' extension [OK]
Hint: Compare extname result including dot and case [OK]
Common Mistakes:
  • Omitting the dot in extension comparison
  • Ignoring case sensitivity
  • Filtering by empty string instead of '.js'