Node.js
[NodeJS] 버퍼와 스트림
min_s
2025. 2. 1. 21:26
노드에서는 Buffer 객체를 사용할 수 있다.
예를 들어 스트르밍할때, 100MB 파일을 1MB씩 나누어 보내면 수신측은 이 버퍼들을 다시 하나로 만들어줘야한다.
아래는 concat을 이용하여 하나로 합쳐줬다.
const buffer = Buffer.from('저를 버퍼로 바꿔보세요');
console.log('from():', buffer);
console.log('length:', buffer.length);
console.log('toString():', buffer.toString());
const array = [Buffer.from('스'), Buffer.from('벤'), Buffer.from('데')];
const buffer2 = Buffer.concat(array);
console.log('concat():', buffer2.toString());
const buffer3 = Buffer.alloc(5);
console.log('alloc():', buffer3);
실행 결과
이번엔 스트림 방식이다. 비동기 방식이기 때문에 에러 처리가 필수적이다.
const fs = require('fs');
const readStream = fs.createReadStream('./readme.txt');
const data = [];
readStream.on('data', (chunk) => {
data.push(chunk);
console.log('data:', chunk, chunk.length);
});
readStream.on('end', () => {
console.log('end:', Buffer.concat(data).toString());
});
readStream.on('error', (err) => {
console.log('error:', err);
});
스트림은 일정 크기로 나누어 전송이 가능하다.
따라서 스트림 방식은 버퍼 방식에 비해 메모리 절약이 가능하다.