🧰
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('최초 연결!');
});