프로그래밍/Node.js

[Node.js 강의 시리즈] 6강 - 파일 시스템 모듈 (fs)

월횽 2024. 7. 1. 06:30
728x90
반응형
SMALL

강의 목표: Node.js의 파일 시스템 모듈인 fs를 사용하여 파일을 읽고, 쓰고, 수정하고, 삭제하는 방법을 학습하고, 비동기와 동기 방식의 차이점을 이해한다.

 

 

 

 

 

1. 파일 읽기, 쓰기, 수정, 삭제

파일 시스템 모듈(fs) 소개

· Node.js의 fs 모듈은 파일 시스템과 상호작용하기 위한 다양한 메서드를 제공한다.
· 이 메서드들은 대부분 비동기와 동기 버전으로 제공된다.

 

1. 파일 읽기

 

비동기 방식

const fs = require('fs');

// 비동기 방식으로 파일 읽기
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(data);
});

 

728x90

동기 방식

const fs = require('fs');

// 동기 방식으로 파일 읽기
try {
  const data = fs.readFileSync('example.txt', 'utf8');
  console.log(data);
} catch (err) {
  console.error(err);
}

 

 

 

2. 파일 쓰기

 

비동기 방식

const fs = require('fs');

// 비동기 방식으로 파일 쓰기
fs.writeFile('example.txt', 'Hello, Node.js!', (err) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log('File written successfully');
});

 

동기 방식

const fs = require('fs');

// 동기 방식으로 파일 쓰기
try {
  fs.writeFileSync('example.txt', 'Hello, Node.js!');
  console.log('File written successfully');
} catch (err) {
  console.error(err);
}

 

 

3. 파일 수정

 

비동기 방식

const fs = require('fs');

// 비동기 방식으로 파일 수정 (기존 내용에 덧붙임)
fs.appendFile('example.txt', '\nWelcome to the world of Node.js!', (err) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log('File updated successfully');
});
반응형

동기 방식

const fs = require('fs');

// 동기 방식으로 파일 수정 (기존 내용에 덧붙임)
try {
  fs.appendFileSync('example.txt', '\nWelcome to the world of Node.js!');
  console.log('File updated successfully');
} catch (err) {
  console.error(err);
}

 

 

4. 파일 삭제

 

비동기 방식

const fs = require('fs');

// 비동기 방식으로 파일 삭제
fs.unlink('example.txt', (err) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log('File deleted successfully');
});

 

동기 방식

const fs = require('fs');

// 동기 방식으로 파일 삭제
try {
  fs.unlinkSync('example.txt');
  console.log('File deleted successfully');
} catch (err) {
  console.error(err);
}

 

 

 

 

 

2. 비동기와 동기 방식의 차이점

비동기 방식

· 장점: 비동기 방식은 작업이 완료될 때까지 기다리지 않고, 다른 작업을 동시에 진행할 수 있다. 이는 서버의 응답성을 높이고, 대기 시간을 줄일 수 있다.

· 단점: 콜백 함수나 프로미스를 사용해야 하므로 코드가 복잡해질 수 있다.

 

동기 방식

· 장점: 동기 방식은 코드가 순차적으로 실행되므로 이해하기 쉽고, 디버깅이 용이하다.
· 단점: 하나의 작업이 완료될 때까지 다음 작업이 대기해야 하므로, 특히 I/O 작업에서 성능 저하가 발생할 수 있다.

 

비교 예제

· 비동기 방식으로 여러 파일을 읽을 때, 모든 파일이 동시에 읽히기 시작하며 각 파일이 완료될 때마다 콜백 함수가 실행된다.
· 동기 방식으로 여러 파일을 읽을 때, 첫 번째 파일이 완전히 읽힐 때까지 다음 파일은 읽기 시작하지 않는다.

 

예제: 비동기 방식으로 여러 파일 읽기

const fs = require('fs');

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

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

 

예제: 동기 방식으로 여러 파일 읽기

const fs = require('fs');

try {
  const data1 = fs.readFileSync('file1.txt', 'utf8');
  console.log('File1:', data1);

  const data2 = fs.readFileSync('file2.txt', 'utf8');
  console.log('File2:', data2);
} catch (err) {
  console.error(err);
}

 

 

 

 

 

- 이전 수업 목록

 

 

 

 

728x90
반응형
LIST