Files*

Importing the fs module

const fs = require('fs');
const fsPromises = require('fs').promises;  // For promise-based API

Reading Files

// Asynchronous
fs.readFile('file.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// Synchronous
const data = fs.readFileSync('file.txt', 'utf8');

// Promises
fsPromises.readFile('file.txt', 'utf8')
  .then(data => console.log(data))
  .catch(err => console.error(err));

Writing Files

// Asynchronous
fs.writeFile('file.txt', 'Hello, World!', (err) => {
  if (err) throw err;
  console.log('File written');
});

// Synchronous
fs.writeFileSync('file.txt', 'Hello, World!');

// Promises
fsPromises.writeFile('file.txt', 'Hello, World!')
  .then(() => console.log('File written'))
  .catch(err => console.error(err));

Appending to Files

// Asynchronous
fs.appendFile('file.txt', 'More content', (err) => {
  if (err) throw err;
  console.log('Content appended');
});

// Synchronous
fs.appendFileSync('file.txt', 'More content');

// Promises
fsPromises.appendFile('file.txt', 'More content')
  .then(() => console.log('Content appended'))
  .catch(err => console.error(err));

Checking if File Exists

// Asynchronous
fs.access('file.txt', fs.constants.F_OK, (err) => {
  console.log(`${err ? 'does not exist' : 'exists'}`);
});

// Synchronous
try {
  fs.accessSync('file.txt', fs.constants.F_OK);
  console.log('exists');
} catch (err) {
  console.log('does not exist');
}

Deleting Files

// Asynchronous
fs.unlink('file.txt', (err) => {
  if (err) throw err;
  console.log('File deleted');
});

// Synchronous
fs.unlinkSync('file.txt');

// Promises
fsPromises.unlink('file.txt')
  .then(() => console.log('File deleted'))
  .catch(err => console.error(err));

Renaming Files

// Asynchronous
fs.rename('oldFile.txt', 'newFile.txt', (err) => {
  if (err) throw err;
  console.log('File renamed');
});

// Synchronous
fs.renameSync('oldFile.txt', 'newFile.txt');

// Promises
fsPromises.rename('oldFile.txt', 'newFile.txt')
  .then(() => console.log('File renamed'))
  .catch(err => console.error(err));

Getting File Information

// Asynchronous
fs.stat('file.txt', (err, stats) => {
  if (err) throw err;
  console.log(stats);
});

// Synchronous
const stats = fs.statSync('file.txt');

// Promises
fsPromises.stat('file.txt')
  .then(stats => console.log(stats))
  .catch(err => console.error(err));

Creating Directories

// Asynchronous
fs.mkdir('newDir', { recursive: true }, (err) => {
  if (err) throw err;
  console.log('Directory created');
});

// Synchronous
fs.mkdirSync('newDir', { recursive: true });

// Promises
fsPromises.mkdir('newDir', { recursive: true })
  .then(() => console.log('Directory created'))
  .catch(err => console.error(err));

Reading Directories

// Asynchronous
fs.readdir('dir', (err, files) => {
  if (err) throw err;
  console.log(files);
});

// Synchronous
const files = fs.readdirSync('dir');

// Promises
fsPromises.readdir('dir')
  .then(files => console.log(files))
  .catch(err => console.error(err));

Watching Files/Directories

fs.watch('file.txt', (eventType, filename) => {
  console.log(`Event type is: ${eventType}`);
  if (filename) {
    console.log(`Filename provided: ${filename}`);
  }
});

Streams

// Read Stream
const readStream = fs.createReadStream('file.txt');
readStream.on('data', (chunk) => {
  console.log(chunk);
});

// Write Stream
const writeStream = fs.createWriteStream('file.txt');
writeStream.write('Hello, World!');
writeStream.end();

Last updated