Core Concepts

File System

Read, write, and manage files and directories using Node.js built-in fs module.

The fs Module

Node.js's built-in fs module provides file system operations. Use fs.promises for async operations with async/await.

Common Operations

  • Reading files: fs.readFile
  • Writing files: fs.writeFile
  • Appending: fs.appendFile
  • Deleting: fs.unlink
  • Directories: fs.mkdir, fs.readdir
  • Checking existence: fs.access, fs.stat

Streams

For large files, use streams to process data in chunks rather than loading everything into memory.

Example

nodejs
const fs = require('fs').promises;
const path = require('path');

async function fileDemo() {
  const filePath = path.join(__dirname, 'data.txt');

  // Write a file
  await fs.writeFile(filePath, 'Hello, Node.js!\n');
  console.log('File written');

  // Append to file
  await fs.appendFile(filePath, 'Line 2\nLine 3\n');

  // Read the file
  const content = await fs.readFile(filePath, 'utf8');
  console.log(content);

  // Get file info
  const stats = await fs.stat(filePath);
  console.log('Size:', stats.size, 'bytes');
  console.log('Modified:', stats.mtime);

  // List directory contents
  const files = await fs.readdir(__dirname);
  console.log('Files:', files);

  // Create directory
  await fs.mkdir(path.join(__dirname, 'output'), { recursive: true });

  // Delete file
  await fs.unlink(filePath);
}

// Streams for large files
const { createReadStream, createWriteStream } = require('fs');
const readline = require('readline');

async function processLargeFile(inputPath) {
  const rl = readline.createInterface({
    input: createReadStream(inputPath),
    crlfDelay: Infinity,
  });

  for await (const line of rl) {
    console.log('Line:', line);
  }
}

fileDemo().catch(console.error);
Try it yourself — NODEJS