서버(Server)/Server&Nodejs&DB
nodejs : 파일 열기, 닫기 처리와 createReadStream 으로 파일 읽기
3DMP
2018. 4. 30. 18:25
파일 Open , close 이벤트 처리
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 31 32 33 34 35 36 37 38 39 40 | var fs = require('fs'); //파일이 없으면 만든다 fs.open('./output1.txt', 'w', function (err, fd) //파일 열기 완료후 call - back { if (err) { console.log('파일 open 에러'); console.dir(err); return; } //파일이 열린 이후, 팡리에다가 쓰기 //쓸 내용을 변수로 따로 만듬 //Buffer 문자열을 담아두는 객체, 길이등을 얻어올 수 있음 또는 다른 문자열과 인코딩방식을 지정해 Buffer 에 쓸 수 있음 var buf = new Buffer('안녕\n!!!'); fs.write(fd, buf, 0, buf.length, //어디서부터 쓸 것인지 버퍼의 시작점과 끝점 지정 function (err, written, buffer) //쓰기가 완료 된 이후 실행되는 call - back { if (err) { console.log('파일 쓰기 에러'); console.dir(err); return; } console.log('쓰기 완료'); fs.close(fd, function () //닫기가 완료된 이후의 call - back { console.log('파일 닫기 완료'); } ); } ); }); |
결과 :
쓰기 완료
파일 닫기 완료
output1.txt :
안녕
!!!
스트림으로 읽어들이는 방식
위 output1.txt 파일에 써진 내용을 읽어들인다
파일을 읽는 중간 중간 data 이벤트가 발생하는데 읽은 파일이 짧던 크던 이 이벤트는 초반 처음에 한번 호출되고
파일이 짧아 로딩 시간이 짧아지게 되면 data 이벤트는 반복하여 호출되지 않는다, 일정 크기 이상이어 중간에 한번씩 호출된다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var fs = require('fs'); var infile = fs.createReadStream('./output1.txt', { flags: 'r' }); //스트림으로 읽어들이는 과정 도는 읽기가 완료 됐을때 이벤트가 발생된다 // 중간 중간 읽어 들이는 중간 이벤트 infile.on('data', function (data) { console.log('읽어들인 데이터 : ' + data); }); //읽기가 완료 됐을때의 이벤트 infile.on('end', function () { console.log('읽기 종료'); }); |
결과화면 :
반응형