Node.js입출력

스트림 기본

큰 파일이나 네트워크 데이터를 한 번에 다 읽지 않고 흘려 보내는 Node.js 스트림 기본 패턴을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

javascript
import { createReadStream, createWriteStream } from "node:fs";

const source = createReadStream("./big.log");
const target = createWriteStream("./copy.log");

source.pipe(target);

설명

  • 스트림은 데이터를 작은 청크 단위로 흘려 보내므로 메모리를 아낄 수 있습니다.
  • 큰 파일 복사, 압축, 다운로드 응답 전송 같은 곳에서 자주 등장합니다.
  • pipe를 쓰면 읽기 스트림과 쓰기 스트림을 간단히 연결할 수 있습니다.

짧은 예제

javascript
source.on("data", (chunk) => {
  console.log("chunk size:", chunk.length);
});

빠른 정리

개념설명
Readable읽는 쪽 스트림
Writable쓰는 쪽 스트림
pipe()스트림 연결
highWaterMark내부 버퍼 크기 조정

주의할 점

스트림 이벤트를 직접 다룰 때는 error 이벤트를 빠뜨리지 않아야 중간 실패를 놓치지 않습니다.