Bird
Raised Fist0
Node.jsframework~5 mins

Checking file existence and stats in Node.js - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What Node.js module is commonly used to check if a file exists and to get file stats?
The fs (File System) module is used to check file existence and retrieve file stats in Node.js.
Click to reveal answer
beginner
How does fs.stat() help when working with files?
fs.stat() returns information about a file, such as size, creation date, and whether it is a file or directory.
Click to reveal answer
intermediate
What is the difference between fs.existsSync() and fs.access()?
fs.existsSync() synchronously checks if a file exists, while fs.access() asynchronously checks file accessibility and permissions.
Click to reveal answer
intermediate
Why is fs.exists() deprecated and what should you use instead?
fs.exists() is deprecated because it can lead to race conditions. Instead, use fs.access() or try to open the file directly.
Click to reveal answer
beginner
What does stats.isFile() return when called on a file stats object?
It returns true if the path is a regular file, otherwise false.
Click to reveal answer
Which method would you use to synchronously check if a file exists in Node.js?
Afs.existsSync()
Bfs.stat()
Cfs.readFile()
Dfs.access()
What does fs.stat() provide about a file?
AFile metadata like size and creation time
BFile content
CFile permissions only
DFile encoding
Which method is recommended instead of the deprecated fs.exists()?
Afs.writeFile()
Bfs.readFile()
Cfs.open()
Dfs.access()
What does stats.isDirectory() return if the path is a folder?
Afalse
Btrue
Cnull
Dundefined
Which Node.js module must you import to use fs.stat()?
Ahttp
Bpath
Cfs
Dos
Explain how to check if a file exists asynchronously in Node.js and how to get its size.
Think about using fs.access first, then fs.stat for details.
You got /4 concepts.
    Describe why using fs.exists() is discouraged and what safer alternatives exist.
    Focus on safety and modern Node.js practices.
    You got /4 concepts.

      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

      1. Step 1: Understand file existence check methods

        fs.access is designed to check file accessibility without opening or reading it.
      2. 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.
      3. Final Answer:

        fs.access -> Option D
      4. 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

      1. Step 1: Identify synchronous stat method

        fs.statSync is the synchronous method to get file stats.
      2. Step 2: Check other options

        fs.stat is asynchronous, others are invalid method names.
      3. Final Answer:

        fs.statSync('file.txt') -> Option A
      4. 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?
      const fs = require('fs');
      fs.stat('example.txt', (err, stats) => {
        if (err) return console.error('Error');
        console.log(stats.isFile(), stats.size);
      });
      medium
      A. true 1024
      B. false 1024
      C. true undefined
      D. Error

      Solution

      1. Step 1: Understand fs.stat callback

        If file exists, err is null and stats object contains file info.
      2. Step 2: Check stats properties

        stats.isFile() returns true if it is a file, stats.size returns file size in bytes.
      3. Final Answer:

        true 1024 -> Option A
      4. 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

      1. Step 1: Check fs.access usage

        fs.access is asynchronous and requires a callback or promise to handle errors.
      2. Step 2: Understand try/catch with async

        Try/catch does not catch errors from async calls without await or callback handling.
      3. Final Answer:

        fs.access is asynchronous and needs a callback or promise -> Option B
      4. 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

      1. 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.
      2. 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.
      3. Final Answer:

        function isDirectory(path) { try { return fs.statSync(path).isDirectory(); } catch { return false; } } -> Option C
      4. Quick Check:

        Try/catch with statSync and isDirectory() = correct [OK]
      Hint: Use try/catch with fs.statSync and isDirectory() to check safely [OK]
      Common Mistakes:
      • Not handling errors for missing paths
      • Checking isFile() instead of isDirectory()
      • Using fs.accessSync without try/catch