readFile 방식이 편리하지만 용량에 따른 동일 버퍼가 필요
ex) 1GB 파일 읽기 = 1GB 버퍼 생성 = 1GB 메모리 자원 낭비
동시 사용자가 많을 경우 서버 자원 낭비, 메모리 문제 발생
이를 해결하기 위해서 스트림 활용
100MB 버퍼 생성 후 10번 정도 걸쳐서 전송하는 방식
const writeStream = fs.createWriteStream('./profile.txt');
writeStream.on('finish', ()=>{
console.log("입력 종료");
});
writeStream.write("안녕하세요\n");
writeStream.write("일루아에요~!");
writeStream.end();
/*highWaterMark default: 64KB - 기본 버퍼의 크기*/
const readStream = fs.createReadStream("./profile.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.log('error: ', err);
});
반응형
'메모 log (간단메모) > backend' 카테고리의 다른 글
AJAX 요청 - axios 또는 jQuery (0) | 2020.09.20 |
---|---|
Promise (0) | 2020.09.20 |