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.