Will find a way
스트림(Stream) 사용 예제 본문
Node.js에서 파일 시스템 모듈(fs)과 스트림 모듈을 사용하여, 파일 'test.txt'를 읽고, 그 내용을 대문자로 변환한 후, 'test2.txt'라는 새로운 파일에 저장하는 예제.
// 1. 필요한 모듈 로드
// 'stream' 모듈에서 'Transform' 객체를 가져온다.
// 'Transform' 스트림은 입력 데이터를 받아 변환 후 출력할 수 있는 스트림
// 'fs' 모듈은 파일 시스템을 조작하기 위해 사용되며, 여기서는 파일을 읽고 쓰는데 사용된다.
const { transform } = require("stream");
const fs = require("fs");
// 2. 청크 크기 설정
// 청크 크기를 설정한다. 이 예제에서는 64Kb로 설정했다.
// 스트림은 데이터를 일정크기(청크)로 나누어서 처리
const chunkSize = 64 * 1024;
// 3. Transform 스트림 생성
// Transform 클래스를 사용하여 새로운 변환 스트림을 생성한다.
// highWaterMark 옵션은 스트림이 처리할 최대 청크 크기를 설정한다.
// transform 메서드는 스트림이 데이터를 변환할 때 호출된다. 여기서는 입력 데이터를 문자열로
// 변환한 후 대문자로 변환하고, 'this.push'를 사용하여 변환된 데이터를 출력 스트림에 전달.
// 변환이 완료되면 callback 함수를 호출하여 다음 청크를 처리할 수 있도록 한다.
const transformData = new Transform({
highWaterMark: chukSize,
transform(chunk, en, callback){
this.push(chunk.toString().toUpperCase());
}
callback();
});
// 4. 읽기 스트림 생성
// fs.createReadStream 메서드를 사용하여 파일 'test.txt'에서 데이터를 읽기 위한 스트림을 생성한다.
// highWaterMark 옵션을 사용하여 읽기 스트림의 청크 크기를 설정한다.
const test = fs.createReadStream('test.txt', { highWaterMark: chunkSize });
// 5. 쓰기 스트림 생성
// fs.createWriteStream 메서드를 사용하여 파일 test2.txt에 데이터를 쓰기위한 스트림을 생성한다.
const test2 = fs.createWriteStream('test2.txt`);
// 6. 스트림 파이프라인 구성
// pipe 메서드를 사용하여 스트림을 연결
// test 읽기 스트림의 데이터를 transformData 스트림으로 전달하고
// 변환된 데이터를 test2 쓰기 스트림으로 전달한다.
// test.txt의 내용이 대문자로 변환되어 test2.txt에 저장된다.
test.pipe(transform).pipe(test2);
'BackEnd > NodeJs' 카테고리의 다른 글
NodeJs fs 모듈 (파일 시스템) (0) | 2024.06.18 |
---|---|
3-way-handshake 코드 구현 (0) | 2024.06.18 |
버퍼 (Buffer) / 스트림 (Stream) (1) | 2024.06.11 |
TCP 서버 간단하게 구현하기 (0) | 2024.06.10 |
[NodeJs] 모듈, require, module.exports와 exports (0) | 2024.06.05 |