빠른 참조

Node.js fs 모듈 치트시트

Node.js fs 모듈에 대한 빠른 참조 가이드: 비동기 및 동기 파일 읽기/쓰기, 파일 감시, 메타데이터 확인, 파일 디스크립터 및 디렉터리 작업.

· 게시일

Node.js fs (File System) 모듈은 Promise, 콜백 또는 동기 실행 방식을 사용하여 로컬 파일 시스템과 상호 작용하는 API를 제공합니다.

Promise 기반 API (fs/promises)

const fs = require('fs/promises');
// import fs from 'node:fs/promises';

// 파일을 UTF-8 문자열로 읽기
const content = await fs.readFile('data.txt', 'utf8');

// 파일 작성 또는 내용 대체
await fs.writeFile('output.txt', 'Hello World', 'utf8');

// 파일 끝에 내용 추가
await fs.appendFile('log.txt', 'New entry\n', 'utf8');

// 존재 여부 및 접근 권한 확인
try {
  await fs.access('config.json');
} catch {
  console.log('파일이 존재하지 않거나 접근할 수 없습니다');
}

동기식 API

const fs = require('fs');

const data = fs.readFileSync('input.txt', 'utf8');
fs.writeFileSync('output.txt', data);
fs.appendFileSync('output.txt', '\nappended');

const exists = fs.existsSync('file.txt');

파일 메타데이터 및 상태 확인 (fs.stat)

const stats = await fs.stat('file.txt');

stats.isFile();            // -> 일반 파일 여부 (true / false)
stats.isDirectory();       // -> 디렉터리 여부 (true / false)
stats.isSymbolicLink();    // -> 심볼릭 링크 여부 (true / false)
stats.size;                // 바이트 단위의 파일 크기
stats.mtime;               // 최종 수정 타임스탬프

디렉터리 작업

// 디렉터리 항목 목록 조회
const files = await fs.readdir('src/');

// 재귀적 디렉터리 생성
await fs.mkdir('build/assets/css', { recursive: true });

// 재귀적 디렉터리 삭제
await fs.rm('dist/', { recursive: true, force: true });

파일 시스템 변경 감시 (fs.watch)

const fs = require('fs');

const watcher = fs.watch('src/', { recursive: true }, (eventType, filename) => {
  console.log(`Event: ${eventType} on ${filename}`);
});

// 감시 중지
watcher.close();

파일 디스크립터 (File Descriptors)

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

// 읽기 전용으로 열기
const filehandle = await fs.open('archive.bin', 'r');

// 1024 바이트 버퍼 할당
const buffer = Buffer.alloc(1024);

// 버퍼로 바이트 읽기
const { bytesRead } = await filehandle.read(buffer, 0, 1024, 0);

await filehandle.close();

관련 참고 자료

관련 주제