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/catcharound sync calls. - Streams are memory-efficient for large files.