CreateReadStream
const fs = require('fs'); const readStream = fs.createReadStream('./readme.txt', {highWaterMark: 16}); const data = []; // readme.txt에 대한 buffer를 16bytes씩 생성한다. readStream.on('data', (chunk) => { data.push(chunk); consoloe.log('data', chunk, chunk.length); //buffer를 생성하기 위한 조각 조각들을 chunk라고 한다. }) readStream.on('end', () => { console.log('end', Buffer.concat(data).toString()); //chunk의 모음인 data를 사람이 알 수 있는 문자열로 바꿔준다. }) readStream.on('error', (err) => { console.error(err); })
createWriteStream
const fs = require('fs'); const writeStream = fs.createWriteStream('./writeme.txt'); writeStream.on('finish', () => { console.log('파일 쓰기 완료'); }) writeStream.write('이 글을 씁니다.\n'); wrtieStream.write('한번 더 씁니다.'); writeStream.end();
pipe
stream은 buffer의 흐름이기 때문에, 여러 개의 stream을 이어 buffer가 흘러가게 할 수 있다.
const fs = require('fs'); const readStream = fs.createReadStream('readme.txt'); const writeStream = fs.createWriteStream('writeme.txt'); readStream.pipe(writeStream); //이렇게 하면, readme.txt를 읽어들여, writeme.txt로 새로 써 줄 수 있다. //복사 같은 개념으로 볼 수 있다.
pipe는 stream 간에 연속해서 계속 이어질 수 있다.
const fs = require('fs'); const zlib = require('zlib'); const zlibStream = zlib.createGzip(); const readStream = fs.createReadStream('readme.txt'); const writeStream = fs.createWriteStream('writeme.txt'); readStream.pipe(zlibStream).pipe(writeStream); //Gzip 형식으로 data를 압축하여 piping 가능하다.
새로 나온 파일 복사 방법
const fs = require('fs'); const readStream = fs.copyFile('./readme.txt', './writeme.txt', (err) => { console.error(err); })
예외(예기치 못한 에러) 처리하기 - Nodejs (0) | 2019.05.14 |
---|---|
events 모듈 - Nodejs (0) | 2019.05.14 |
fs 모듈 (동기와 비동기) - Nodejs (0) | 2019.05.14 |
util(deprecate, promisify) - Nodejs (0) | 2019.05.14 |
crypto 모듈을 이용한 양방향 암호화 - Nodejs (0) | 2019.05.14 |
댓글 영역