Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- git
- 포워드 엔지니어링
- nodejs
- 알고리즘
- a href="#" onclick="return false"
- bubblesort
- $('input [name=
- container-fluid
- $(document).on
- 유효성
- it지원
- interface default
- 최대값 최소값
- SQL
- REST
- cmd mariaDB
- resultType="hashmap"
- nodejs http
- #{}
- git 명령어
- gradle 설치
- BCrypt
- ${}
- 전역객체
- map형태 jsp와 mapper
- 자바 로또
- templet
- git message
- MariaDB
- 자바 예상문제
Archives
- Today
- Total
Rubberduck-Debugging
nodeJS 비동기식, 파일 다루기 본문
* node js는 비동기라 callback을 사용한다.
fs 모듈 사용시
* 비동기식 : callback 사용
논-블럭 방식
fs.readFile('textfile.txt', 'utf8',function(error, data) {});
fs.readFile('none_exist.txt', 'utf-8', function(err, data) {
if ( err ) {
console.error('Readfile error ', err);
} else {
// 정상 처리
}
});
* 동기식 : readFileSync
블럭방식 : 성능상 주의
var data = fs.readFileSync('textfile.txt', 'utf8');
try {
var data = fs.readFileSync('none_exist.txt', 'utf-8');}
catch ( exception ) {
console.error('Readfile Error : ', exception);}-----------------------------------------------------------------------------------------------------------------파일 다루기var fs = require('fs');fs.writeFile('textData.txt', 'Hello World', function(err) {if ( err ) {console.error('Error : ', err);return;}console.log('Write');});*FileRead.jsvar fs = require('fs');var file = 'read.txt';fs.access(file, fs.F_OK, function(err) { //access = 접근if ( err ) {console.log('파일 없음');process.exit(1);}else {console.log('파일 존재');fs.stat(file, function(err, stats) { //첫번째 파라미터 : error, 두번째부터 진짜if ( err ) {console.error('File Stats Error', err);return;}console.log('Create : ', stats['birthtime']);console.log('size : ', stats['size']);console.log('isFile : ', stats.isFile());console.log('isDirectory : ', stats.isDirectory());console.log('isBlockDevice : ', stats.isBlockDevice());if ( stats.isFile() ) {fs.readFile(file, function(err, data) {if ( err ) {console.error('File Read Error', err);return;}// encoding을 작성하지 않으면 Buffer로var str = data.toString('utf-8');console.log('File Contents : ', str);});}});}});1. require('fs')로 읽어온다.
2. fs.access로 접근한다.3. 기본적인 구조가 먼저 error날 때를 상정, if 처리4. process.exit( 숫자 ) -> 종료시킨다-----------------------------------------------------------------------------------------------------------------[스트림 : 데이터 전송 흐름]-콘솔 입력/출력-파일 읽기/쓰기-서버/클라이언트 -데이터 전송스트림종류읽기 스트림 : Readable Stream쓰기 스트림 : Writeable StreamReadable Stream- 읽기 스트림 : Readable- 모드 : flowing, paused- flowing mode--데이터를 자동으로 읽는 모드--전달되는 데이터를 다루지 않으면 데이터 유실- paused mode--데이터가 도착하면 대기--read() 함수로 데이터 읽기Readable Stream-readable : 읽기 가능한 상태-data : 읽을 수 있는 데이터 도착-end : 더 이상 읽을 데이터가 없는 상태-close : 스트림이 닫힌 상태-error : 에러var is = fs.createReadStream(file);is.on('readable', function() {console.log('== READABLE EVENT');});is.on('data', function(chunk) {console.log('== DATA EVENT');console.log(chunk.toString());});// end 이벤트is.on('end', function() {console.log('== END EVENT');});var is = fs.createReadStream(file);// 'data' 이벤트가 없으면 paused modeis.on('readable', function() {console.log('== READABLE EVENT');// 10바이트씩 읽기while( chunk = is.read(10) ) {console.log('chunk : ', chunk.toString());}});-----------------------------------------------------------------------------------------------------------------Writable Stream-Writable Stream : 데이터 출력-http 클라이언트의 요청-http서버의 응답-파일 쓰기 스트림-tcp 소켓이벤트-drain : 출력 스트림에 남은 데이터를 모두 보낸 이벤트-error : 에러-finish : 모든 데이터를 쓴 이벤트-pipe : 읽기 스트림과 연결(pipe)된 이벤트-unpipe : 연결(pipe) 해제 이벤트var fs = require('fs');var os = fs.createWriteStream('output.txt');os.on('finish', function() {console.log('== FINISH EVENT');});os.write('1234\n');os.write('5678\n');os.end();-----------------------------------------------------------------------------------------------------------------URL-URL 모듈var url = require(‘url');-URL 모듈url.parse(urlStr[, parseQueryString][, slashesDenoteHost])-urlStr : URL 문자열-parseQueryString : 쿼리 문자열 파싱, 기본값 falsevar url = require('url');var urlStr = 'http://api.flickr.com/services/feeds/photos_public.gne?tags=raccoon&tagmode=any&format=json&jsoncallback=?';var parsed = url.parse(urlStr, true);console.log(parsed);console.log('protocol : ', parsed.protocol);console.log('host : ', parsed.host);console.log('query : ', parsed.query);* 네트워크 url 정보를 뽑아내는 메소드
'개발자 > 20181127 교육과정' 카테고리의 다른 글
nodeJs npm module (0) | 2019.01.07 |
---|---|
nodeJS npm (0) | 2019.01.07 |
node js 전역객체 실습 (0) | 2019.01.04 |
node js 강의 (0) | 2019.01.04 |
jquery radio,checkbox value값 가져오기 $("input:checkbox (0) | 2019.01.02 |