Notice
Recent Posts
Recent Comments
Today
Total
05-02 00:04
Archives
관리 메뉴

Jeongchul Kim

NodeJs - 모듈(FileSystem, Event, Network) 본문

Computer Language

NodeJs - 모듈(FileSystem, Event, Network)

김 정출 2016. 2. 23. 12:51


NodeJs - 모듈(FileSystem, Event, Network)


FileSystem 모듈

File I/O


파일 읽기

var fs = require('fs');

fs.readFile('text.txt','utf-8', function(err,data) {

if(err){

console.log('file read error');

return;

}

console.log(data);

});

var data = fs.readFileSync('text.txt','utf-8');

console.log(data);


파일 쓰기

var fs = require('fs');

var data = "Hello NodeJs";

fs.writeFile('x:\\test2.txt',data,'utf-8',function(error) {

if(error){

console.log("error");

}else{

console.log("write success");

}

})

try {

fs.writeFileSync('z:\\test3.txt',data,'utf-8');

console.log('file write sync success');

}catch(error) {

console.log("file write sync error."+error.message);

}


디렉터리 읽기

var fs = require('fs');

fs.readdir('.',function(err,files){

/* err 에러, files는 array*/

for(var i=0;i<files.length;i++) {

console.log(files[i]);

}

});


var files = fs.readdirSync('.');

for(var i=0; i<files.length;i++) {

console.log(files[i]);

}


동기적

비동기적 Asyncrounous Thread(병렬처리), Event -> 메모리 사용 증가


대용량 파일 streaming

파일 읽기

var fs = require('fs');

var line=0;

var input = fs.createReadStream('./ls.txt');

input.on('data',function(chunk) {

console.log(line++ +':'+chunk.toString());

})

input.on('end',function() {

console.log('EOF');

})

input.ont('close',function() {

console.log('file close');

});


파일 쓰기


var fs = require('fs');

var output = fs.createWriteStream('out.txt');

for(var i=0;i<100;i++) {

output.write(i+': jeongchul'+new Date().toString()+'\n');

}

output.end('made by jeongchul :D');

output.on('finish',function(){

console.log('write completed.');

});


Event 이벤트

이벤트 바인딩

events.EventEmitter 상속 객체


연결 on(‘eventname’, eventHandler)

연결갯수 제한 10개


제거 removeListener(‘eventname’ handler)


var event = require('events');

var emitter = new event.EventEmitter();

emitter.on('custom',function(){  // custom부분 수정

console.log('custom event!');

})

/*

function hi() {

console.log("hello!");

}

setTimeout(hi,3000);

*/

setTimeout(function() {

emitter.emit('custom');

},3000);

setInterval(function() {

emitter.emit('custom');

},2000);


Network 모듈

server.js

var net = require('net');

var server = net.createServer(function (c) {

console.log("client connected");

c.on('end',function() {

console.log("client disconnected");

});

c.write('hello\n');

c.on('data',function(data){

console.log('client : '+data.toString());

});

//c.pipe(c);

});

server.listen(8888,function() {

console.log('server running on 8888...');

})



nice to meet you :D 전송


client.js



var net = require('net');

var client = net.connect({port:8888}, function() {

console.log("connected to server!");

client.write('client start');

});

client.on('data',function(data){

console.log("server : "+data.toString());

client.end();

});

client.on('end',function(data){

console.log("disconnected from server.");

});



server.js console


client.js console





'Computer Language' 카테고리의 다른 글

Web-Crawler BeautifulSoup Python  (0) 2017.01.06
NodeJs - 모듈(http)  (0) 2016.02.23
NodeJs  (0) 2016.02.23
Eclipse Webserver + HTML Project  (0) 2016.02.22
Eclipse Web 툴 및 webserver 설치하기  (0) 2016.02.22
Comments