File System Operations in Node.js

Node.js provides comprehensive file system operations beyond basic reading and writing. This article covers various file manipulation methods avaliable through the fs module.

Checking File Existence

The fs.exists() and fs.existsSync() methods verify whether a file exists at the specified path:

const fs = require('fs');

// Asynchronous existence check
fs.exists('/path/to/file.txt', (exists) => {
  console.log('File exists:', exists);
});

// Synchronous existence check
const fileExists = fs.existsSync('/path/to/file.txt');
console.log('File exists:', fileExists);

Retrieving File Information

The fs.stat() and fs.statSync() methods return a Stats object containing file metadata:

const fs = require('fs');

fs.stat('example.js', (error, fileStats) => {
  if (error) {
    console.error('Error retrieving file stats:', error);
    return;
  }
  
  console.log('File size:', fileStats.size);
  console.log('Created:', fileStats.birthtime);
  console.log('Modified:', fileStats.mtime);
  console.log('Is file:', fileStats.isFile());
  console.log('Is directory:', fileStats.isDirectory());
});

Directory Traversal

Reucrsive directory traverasl can be implemented using fs.readdir():

const fs = require('fs');
const path = require('path');

function traverseDirectory(dirPath) {
  console.log('Directory:', dirPath);
  
  fs.readdir(dirPath, (err, items) => {
    if (err) {
      console.error('Error reading directory:', err);
      return;
    }
    
    items.forEach(item => {
      const fullPath = path.join(dirPath, item);
      
      fs.stat(fullPath, (err, stats) => {
        if (stats.isFile()) {
          console.log('File:', fullPath);
        } else if (stats.isDirectory()) {
          traverseDirectory(fullPath);
        }
      });
    });
  });
}

traverseDirectory('./');

File Deletion

Files can be removed using fs.unlink():

const fs = require('fs');

fs.unlink('temp_file.txt', (err) => {
  if (err) {
    console.error('Deletion failed:', err);
  } else {
    console.log('File successfully deleted');
  }
});

File Truncation

The fs.truncate() method reduces file size by cutting off data beyond the specified length:

const fs = require('fs');

fs.truncate('large_file.log', 1024, (err) => {
  if (err) {
    console.error('Truncation failed:', err);
  } else {
    console.log('File truncated to 1KB');
  }
});

Directory Management

Create and remove directories using fs.mkdir() and fs.rmdir():

const fs = require('fs');

// Create directory
fs.mkdir('new_directory', (err) => {
  if (err) {
    console.error('Directory creation failed:', err);
    return;
  }
  
  console.log('Directory created');
  
  // Remove directory
  fs.rmdir('new_directory', (err) => {
    if (err) {
      console.error('Directory removal failed:', err);
    } else {
      console.log('Directory removed');
    }
  });
});

File Renaming and Moving

The fs.rename() method can rename files or move them to different locations:

const fs = require('fs');

fs.rename('old_name.txt', 'new_name.txt', (err) => {
  if (err) {
    console.error('Rename failed:', err);
  } else {
    console.log('File renamed successfully');
  }
});

File Monitoring

Monitor file changes using fs.watchFile():

const fs = require('fs');

fs.watchFile('monitored_file.txt', 
  { persistent: true, interval: 2000 },
  (current, previous) => {
    console.log('File modified at:', current.mtime);
    console.log('Previous modification:', previous.mtime);
  }
);

Tags: Node.js fs module file operations Directory Traversal file metadata

Posted on Sat, 10 Oct 2026 16:01:09 +0000 by bob_rock