일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- object
- 게시판
- toString
- https://velog.io/@velopert/create-typescript-react-component
- 출처 : https://webdir.tistory.com/506
- Today
- Total
Back Ground
NodeJs - 스트림 단위로 파일 읽고 쓰기 [ES5] 본문
스트림은
데이터, 패킷 ,비트 등의 일련 연속성을 갖는 흐름을 의미하는데
-음성,영상,데이터 등의 작은 조각들을 하나의 줄기를 이루어 전송하는 데이터열이다.
보통 사용하는 이유는
물리 디스크상의 파일, 장치들을 통일된 방식으로 다루기 위한 가상적인 개념인데
스트림은 어디서 나왔는지 어디로 가는지 신경 쓸 필요없이 자유롭게
어떤 장치 및 프로세스, 화일들과 연결 될 수 있어서
개발자들에게 편리하다.
(대충 사전에서 긁어서 요약 해옴)
Node에서도 Stream을 사용 할 수 있다.
1 | var fs = require('fs'); | cs |
입력 / 출력 스트리밍이 가능하다.
.createReadStream 출력
메소드
1 | var inF = fs.createReadStream('./study/day_05/aaa.txt',{flags:'r'}); | cs |
매개변수
파일 경로, { 플레그 : r (Read) }
※파일 경로는 노드가 실행되는 시점 기준
.createWriteStream 입력
메소드
1 | var outF = fs.createWriteStream('./study/day_05/bbb.txt',{flags:'w'}); | cs |
https://nodejs.org/api/fs.html#fs_fs_createwritestream_path_options
에 들어가보면
|
적용 안할시 기본값으로 들어가는 것을 알 수 있다.
읽고 쓰는 스트림을 예제를 만들기 위해
.on('data') 와
.on('end') 를 이용하였다.
예제)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | var fs = require('fs'); var inF = fs.createReadStream('./study/day_05/aaa.txt',{flags:'r'}); var outF = fs.createWriteStream('./study/day_05/bbb.txt',{flags:'w'}); inF.on('data',function(fileData){ console.log("읽기 :" + fileData); //""+ 문자열인지 인지를 하지 않으면 출력 안나옴 outF.write(fileData); }); inF.on('end',function(){ console.log("읽기 종료"); outF.end(function(){ console.log("쓰기 종료") }); }) | cs |
.on('data') : 스트림 데이터를 방출하는 이벤트
setEncoding()을 사용한 경우 'data' 이벤트가 버퍼(기본값) 또는 문자열을 내보낸다
.on('end') : 스트림 데이터를 종료 하는 이벤트
스트림에서 EOF(TCP 용어 FIN)가 수신되면 발생한다.
더 이상 '데이터' 이벤트가 발생하지 않음을 나타낸다.
종료하지 않으면 계속 스트림을 사용이 가능하다.
출처: https://millermedeiros.github.io/mdoc/examples/node_api/doc/streams.html
한번에 처리하는 방법
.pipe() 사용
.pipe함수에는 .on('data') .on('end')를 할 필요없이
읽을 데이터를 쓰게 만들수 있다.
출력스트림.pipe(입력스트림)
예제)
1 2 3 4 5 6 7 | var fs = require('fs'); var inF = fs.createReadStream('./study/day_05/aaa.txt',{flags:'r'}); var outF = fs.createWriteStream('./study/day_05/bbb.txt',{flags:'w'}); //여기것을 (여기에 쓰다) inF.pipe(outF); //읽는것과 다는것까지 다 처리한다. | cs |
그렇다면 pipe만 쓰면되지
왜 .on('data') .on('end')를 쓰는가?
분명 읽고 쓸때 상황을 체크하거나
그때 처리해야 하는 상황이 있을 수 있기에
단순하게 처리할때는 .pipe()를 사용하면된다.
개발 용도에 맞춰서 사용 하기에 좋은 함수들이다.
'Javascript > Node.js' 카테고리의 다른 글
NodeJS - 클라이언트로 응답을 보내는 방식 [ES5] (0) | 2018.09.18 |
---|---|
NodeJS - http 모듈로 요청받은 파일 내용을 읽고 응답하기 [ES5] (0) | 2018.09.18 |
NodeJS - 파일을 직접 열고 닫으면서 읽거나 쓰기 [ES5] (0) | 2018.09.14 |
NodeJS - 파일 읽고 쓰기 [ES5] (0) | 2018.09.14 |
NodeJS - 상속 [ES5] (0) | 2018.09.13 |