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
Checking file existence and stats
📖 Scenario: You are building a small Node.js script to check if a file exists and get its details like size and creation date. This is useful when you want to verify files before processing them.
🎯 Goal: Create a Node.js script that checks if a file named example.txt exists in the current folder. If it exists, get its size and creation time using Node.js fs module.
📋 What You'll Learn
Use Node.js fs module
Check if example.txt exists
Get file stats if it exists
Extract file size and creation time from stats
💡 Why This Matters
🌍 Real World
Checking if files exist and reading their details is common in scripts that process files, like backup tools or media managers.
💼 Career
Understanding file system operations with Node.js is important for backend developers and automation engineers.
Progress0 / 4 steps
1
Import the fs module and define the file path
Write a line to import the Node.js fs module using import fs from 'fs'. Then create a constant called filePath and set it to the string './example.txt'.
Node.js
Hint
Use ES module syntax to import fs. Define filePath exactly as './example.txt'.
2
Create a variable to check if the file exists
Write a line to create a constant called fileExists that uses fs.existsSync(filePath) to check if the file exists.
Node.js
Hint
Use fs.existsSync with filePath to check existence.
3
Get file stats if the file exists
Write an if statement that checks if fileExists is true. Inside the block, create a constant called stats and set it to fs.statSync(filePath) to get the file stats.
Node.js
Hint
Use if (fileExists) and inside it call fs.statSync(filePath).
4
Extract and store file size and creation time
Inside the if block, create two constants: fileSize set to stats.size and creationTime set to stats.birthtime.
Node.js
Hint
Use stats.size and stats.birthtime to get size and creation time.
Practice
(1/5)
1. Which Node.js method is best to check if a file exists without throwing an error?
easy
A. fs.writeFile
B. fs.readFile
C. fs.open
D. fs.access
Solution
Step 1: Understand file existence check methods
fs.access is designed to check file accessibility without opening or reading it.
Step 2: Compare with other methods
fs.readFile reads content, fs.open opens file descriptor, fs.writeFile writes data. These are not meant for existence check.
Final Answer:
fs.access -> Option D
Quick Check:
Check file existence = fs.access [OK]
Hint: Use fs.access to check file existence safely [OK]
Common Mistakes:
Using fs.readFile which throws error if file missing
Trying fs.writeFile which creates or overwrites file
Using fs.open without error handling
2. Which of the following is the correct syntax to get file stats synchronously in Node.js?
easy
A. fs.statSync('file.txt')
B. fs.stat('file.txt')
C. fs.getStatsSync('file.txt')
D. fs.fileStats('file.txt')
Solution
Step 1: Identify synchronous stat method
fs.statSync is the synchronous method to get file stats.
Step 2: Check other options
fs.stat is asynchronous, others are invalid method names.
Final Answer:
fs.statSync('file.txt') -> Option A
Quick Check:
Synchronous file stats = fs.statSync [OK]
Hint: Sync methods end with Sync, like fs.statSync [OK]
Common Mistakes:
Confusing async fs.stat with sync fs.statSync
Using non-existent methods like fs.getStatsSync
Missing parentheses for function call
3. What will the following code output if 'example.txt' exists and is a file of size 1024 bytes?
If file exists, err is null and stats object contains file info.
Step 2: Check stats properties
stats.isFile() returns true if it is a file, stats.size returns file size in bytes.
Final Answer:
true 1024 -> Option A
Quick Check:
File exists and is file = true and size = 1024 [OK]
Hint: stats.isFile() true means file exists, size shows bytes [OK]
Common Mistakes:
Assuming stats.size is undefined
Confusing isFile() with isDirectory()
Not handling error callback properly
4. Identify the error in this code snippet that checks if a file exists:
const fs = require('fs');
try {
fs.access('data.txt');
console.log('File exists');
} catch (err) {
console.log('File does not exist');
}
medium
A. fs.access does not check file existence
B. fs.access is asynchronous and needs a callback or promise
C. Try/catch cannot catch errors in Node.js
D. console.log syntax is incorrect
Solution
Step 1: Check fs.access usage
fs.access is asynchronous and requires a callback or promise to handle errors.
Step 2: Understand try/catch with async
Try/catch does not catch errors from async calls without await or callback handling.
Final Answer:
fs.access is asynchronous and needs a callback or promise -> Option B
Quick Check:
Async fs.access needs callback/promise [OK]
Hint: Async functions need callbacks or await, not try/catch alone [OK]
Common Mistakes:
Assuming try/catch works with async without await
Ignoring callback parameter in fs.access
Thinking fs.access does not check existence
5. You want to write a function that returns true if a given path is a directory and exists, false otherwise. Which code snippet correctly implements this using Node.js synchronous methods?
hard
A. function isDirectory(path) {
if (fs.statSync(path).isDirectory()) return true;
else return false;
}
B. function isDirectory(path) {
return fs.accessSync(path) && fs.statSync(path).isDirectory();
}
C. function isDirectory(path) {
try {
return fs.statSync(path).isDirectory();
} catch {
return false;
}
}
D. function isDirectory(path) {
try {
return fs.existsSync(path) && fs.statSync(path).isFile();
} catch {
return false;
}
}
Solution
Step 1: Check for existence and directory type safely
Using fs.statSync inside try/catch handles missing path errors and checks if it's a directory.
Step 2: Analyze other options
function isDirectory(path) {
return fs.accessSync(path) && fs.statSync(path).isDirectory();
} misuses fs.accessSync without error handling; function isDirectory(path) {
try {
return fs.existsSync(path) && fs.statSync(path).isFile();
} catch {
return false;
}
} checks isFile() instead of isDirectory(); function isDirectory(path) {
if (fs.statSync(path).isDirectory()) return true;
else return false;
} lacks error handling for missing path.
Final Answer:
function isDirectory(path) { try { return fs.statSync(path).isDirectory(); } catch { return false; } } -> Option C
Quick Check:
Try/catch with statSync and isDirectory() = correct [OK]
Hint: Use try/catch with fs.statSync and isDirectory() to check safely [OK]