createReadStream으로 buffer에 스트림 만들기

YOUNGJOO-YOON·2021년 11월 26일
0

node

목록 보기
2/9

const fs = require('fs');

// readStream 첫 인수는 path
/**
 * @createReadStream : path, option
 * @readme4 path
 * @highWaterMark : 16은 16byte로 버퍼의 크기를 정할 수 있다.
 * @on : (option, callback)
 * @option : 'data' chunk data들을 조작할 수 있음
 * @option : 'end'
 */
const readStream = fs.createReadStream('./readme4.txt', { highWaterMark: 16 });
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.error('error: ', err);
});

fs.createReadStream은 첫 인자로 path, 둘째 인자로 chunk로 쪼갤 크기를 정할 수 있다.
(highWaterMark:16)

readStream.on으로 'data' , 'end', 'error'이라는 이벤트리스너를 만들고 각 이벤트에 대한 콜백함수가 실행된다.

'data'리스너를 통해 배열에 chunk를 저장하고 파일에 대한 스트리밍이 전부 종료된다면 end 이벤트가 발생한다.

Buffer가 담긴 data 배열이므로 Buffer 객체의 concat 함수로 data 배열 변수를 합쳐주면 된다. (array to chunk)

profile
이 블로그의 글은 제 생각을 정리한 글과 인터넷 어딘가에서 배운 것을 정리한 글입니다. 출처는 되도록 남기도록 하겠습니다. 수정 및 건의 오류 등이 있으면 언제든지 댓글 부탁드립니다.

0개의 댓글