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)