fs (File System) module in Node.js

In Node.js, you can read a file using the built-in fs (File System) module. There are different ways to read files, depending on your use case:

1. Synchronous Reading (Blocking)

This method blocks the execution until the file is fully read. Suitable for scripts where blocking isn't an issue.

const fs = require('fs');

try {
  const data = fs.readFileSync('file.txt', 'utf8'); // Specify the encoding if you want a string
  console.log(data);
} catch (err) {
  console.error('Error reading file:', err);
}

2. Asynchronous Reading (Non-Blocking)

This method is preferred for non-blocking, scalable applications.

const fs = require('fs');

fs.readFile('file.txt', 'utf8', (err, data) => {
  if (err) {
    console.error('Error reading file:', err);
    return;
  }
  console.log(data);
});

3. Using Promises

If you prefer working with promises or async/await, you can use fs.promises:

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

async function readFile() {
  try {
    const data = await fs.readFile('file.txt', 'utf8');
    console.log(data);
  } catch (err) {
    console.error('Error reading file:', err);
  }
}

readFile();

4. Reading Large Files (Streaming)

If you're dealing with a large file, using streams is more memory-efficient:

const fs = require('fs');

const stream = fs.createReadStream('file.txt', { encoding: 'utf8' });

stream.on('data', chunk => {
  console.log('Chunk received:', chunk);
});

stream.on('error', err => {
  console.error('Error reading file:', err);
});

stream.on('end', () => {
  console.log('File reading completed.');
});

Choose the Right Method

  • Small files: Use readFileSync or readFile for simplicity.
  • Large files: Use streams to handle memory efficiently.
  • Modern applications: Use promises (fs.promises) or async/await for clean and readable code.

댓글

이 블로그의 인기 게시물

Using the MinIO API via curl

How to split a list into chunks of 100 items in JavaScript, 자바스크립트 리스트 쪼개기

HTML Inline divisions at one row by Tailwind

Boilerplate for typescript server programing

가속도 & 속도

Gradle multi-module project

How to checkout branch of remote git, 깃 리모트 브랜치 체크아웃

CDPEvents in puppeteer

Sparse encoder

Reactjs datetime range picker