← 홈페이지 5강 목록으로
🧰
EPISODE 02
fs · path · os · events

내장 모듈

Node.js가 기본 제공하는 핵심 모듈들 — fs(파일 시스템), path(경로 처리), os(운영체제 정보), events(이벤트 패턴)를 익힙니다.

Node.jsfspathevents
소요 시간
30~45분
난이도
📊 중급 입문
선수 조건
🎯 node-01
결과물
파일을 읽고 쓰며 경로·이벤트를 안전하게 다루는 능력

이 강의에서 배우는 것

  • 1fs로 파일을 동기·비동기로 읽고 쓴다
  • 2path로 OS에 안전하게 경로를 조합한다
  • 3os로 시스템 정보를 조회한다
  • 4EventEmitter로 이벤트 구독/발행 패턴을 구현한다

1. fs 모듈

동기 방식

javascript
const fs = require('fs');

const content = fs.readFileSync('data.txt', 'utf-8');
fs.writeFileSync('output.txt', '저장할 내용', 'utf-8');
const exists = fs.existsSync('data.txt');
const files = fs.readdirSync('./');

비동기 (콜백 / Promise)

javascript
// 콜백
fs.readFile('data.txt', 'utf-8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// Promise
const fs = require('fs/promises');
const data = await fs.readFile('data.txt', 'utf-8');

2. path 모듈

OS마다 다른 경로 구분자(/, \)를 알아서 처리합니다.

javascript
const path = require('path');

path.join('/users', 'john', 'file.txt')  // '/users/john/file.txt'
path.resolve('data', 'output.txt')       // 절대 경로
path.dirname('/users/john/file.txt')     // '/users/john'
path.basename('/users/john/file.txt')    // 'file.txt'
path.extname('readme.md')                // '.md'

// __dirname: 현재 파일이 있는 디렉토리의 절대 경로
const fullPath = path.join(__dirname, 'data', 'input.txt');

3. os 모듈

javascript
const os = require('os');

os.platform()   // 'win32', 'darwin', 'linux'
os.homedir()    // 홈 디렉토리
os.hostname()   // 컴퓨터 이름
os.cpus()       // CPU 정보 배열
os.totalmem()   // 전체 메모리 (bytes)
os.freemem()    // 여유 메모리

4. events 모듈 (EventEmitter)

javascript
const EventEmitter = require('events');
const emitter = new EventEmitter();

emitter.on('data', (message) => {
  console.log('데이터 수신:', message);
});

emitter.emit('data', '안녕하세요!');

// 한 번만 실행
emitter.once('connect', () => {
  console.log('최초 연결!');
});
예제 코드 / 강의 자료

전체 강의 자료와 예제 코드는 GitHub에서 자유롭게 받아볼 수 있습니다.

GitHub에서 보기 ↗