기본 패턴
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 이벤트를 빠뜨리지 않아야 중간 실패를 놓치지 않습니다.