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.

댓글

이 블로그의 인기 게시물

To switch to a specific tag in a Git repository

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

Using the MinIO API via curl

To download a file from MinIO using Spring Boot, 스프링부트 Minio 사용하기

리눅스의 부팅과정 (프로세스, 서비스 관리)

Chromium 개발 환경 세팅, 크로미움 개발 준비하기

Joining an additional control plane node to an existing Kubernetes cluster

urllib3 with proxy settings

CDPEvents in puppeteer

Avro + Grpc in python