fs

The fs module provides file system operations. Both synchronous and asynchronous versions are available for most functions.


API Surface

Low-level

  • open, openSync — open a file descriptor.
  • read, readSync — read bytes from a descriptor.
  • write, writeSync — write bytes.
  • close, closeSync — close a file descriptor.

High-level

  • readFile, readFileSync — read file fully into memory.
  • writeFile, writeFileSync — write data to file, replacing contents.
  • appendFile, appendFileSync — append to file.
  • exists, existsSync — check existence.
  • stat, statSync — metadata (size, mode, timestamps).
  • unlink, unlinkSync — delete file.
  • copyFile, copyFileSync — copy a file.
  • mkdir, mkdirSync — create directory.
  • readdir, readdirSync — list directory.
  • rm, rmSync, rmdir, rmdirSync — remove files/directories.
  • cp — recursive copy.

Streams

  • createReadStream — stream file read.
  • createWriteStream — stream file write.

Misc

  • mkdtemp, mkdtempSync — create unique temporary directory.
  • constants — file system flags and modes.

Examples (English only)

const fs = require("fs");

// Write & read a file
fs.writeFileSync("hello.txt", "Hi Bnlang!");
console.log(fs.readFileSync("hello.txt", "utf8"));

// Append
fs.appendFileSync("hello.txt", "\nAppended");

// Metadata
const stats = fs.statSync("hello.txt");
console.log("Size:", stats.size);

// Directory
fs.mkdirSync("demo");
fs.writeFileSync("demo/a.txt", "x");
console.log(fs.readdirSync("demo"));

// Streams
const r = fs.createReadStream("hello.txt");
r.on("data", chunk => console.log("chunk:", chunk.toString()));

Notes

  • Use asynchronous methods (readFile, writeFile) in production to avoid blocking the event loop.
  • Synchronous versions are simpler but block until complete — better for scripts or initialization.
  • Always handle errors in callbacks or try/catch around sync calls.
  • Streams are memory-efficient for large files.