Node.js파일과 스트림

Buffer 기본

문자열이 아니라 바이트 단위 데이터를 다루는 Node.js `Buffer`의 기본 개념과 사용 흐름을 정리합니다.

마지막 수정 2026년 3월 20일

기본 패턴

javascript
const buf = Buffer.from("hello", "utf-8");

console.log(buf.length);      // 5
console.log(buf.toString());  // hello

설명

  • Buffer는 문자열보다 더 낮은 수준인 바이트 배열을 다루는 Node.js의 핵심 자료구조입니다.
  • 파일, 네트워크 소켓, 스트림에서는 데이터가 문자열이 아니라 바이트로 오가는 경우가 많아 Buffer를 자주 만나게 됩니다.
  • Buffer.from()은 문자열이나 배열을 버퍼로 바꾸고, toString()은 다시 사람이 읽을 수 있는 문자열로 바꿉니다.
  • 인코딩을 이해하지 못하면 한글 깨짐, 길이 계산 오류, 바이너리 파일 손상 같은 문제가 생기기 쉽습니다.
  • 따라서 Buffer는 단순 API가 아니라 "문자열과 바이트는 다르다"는 사실을 Node에서 체감하게 만드는 기본 개념입니다.

짧은 예제

javascript
const data = Buffer.from([0x41, 0x42, 0x43]);

console.log(data.toString("utf-8")); // ABC

빠른 정리

표현의미
Buffer.from("text")문자열을 버퍼로 변환
Buffer.from([65, 66])바이트 배열로 버퍼 생성
buf.toString("utf-8")버퍼를 문자열로 변환
buf.length바이트 길이

주의할 점

문자열 길이와 바이트 길이는 같지 않을 수 있습니다. 특히 UTF-8 환경에서 한글이나 이모지는 여러 바이트를 차지하므로, 저장 공간이나 전송 길이를 계산할 때 Buffer 기준으로 생각해야 합니다.

참고 링크

1 sources