[nodejs] 기본 함수 사용한 디렉토리 검색!!

2013. 3. 25. 21:30 - 에릭투스

------------------------------------------------------------

내가 만들고 싶은 목표! 

 : node를 사용한 자동 패치 배포 파일 만들기... 

 : 매번 패치파일을 만들어야할때, build되었던 파일을 일일히 수동으로 디렉토리를 만들어주고, 파일을 넣어줘야했지만

 : 앞으로는 Root 디렉토리를 지정하고, Tree 형태로 파일을 선택하여  패치 파일 생성 버튼만 누르면 

 : 짜잔!! 하고 zip형태로 나오는게 목표임.


-> 매번, 덜렁대서 배포할 파일 스펠링 조금씩 틀림!! ㅠㅅㅜ 

------------------------------------------------------------



1) File 정보를 확인하는 함수들.. (File System = fs)


var fs = require('fs');	 
fs.stat('./stat.js', function(err, stats){
	if(err){
		throw err;
	}
	console.log(stats);
	console.log('is file : '+stats.isFile());
});

2) 겸사겸사 파일 생성하는 fs 와우..짱인데...

var fs = require('fs');
fs.writeFile('./example.txt','hello world!!', encoding='utf-8',function(err){
	if(err) throw err;
	console.log('file writed');
});


3) 디렉토리 생성 기능 오오오오오오오오오



fs.mkdir('./exampleDir', '0777', function(err){
	if(err) throw err;
	console.log('dir writed');
});
//fs.unlink(); //파일을 삭제.
//fs.rmdir();//디렉토리를 삭제
//fs.realpath();//절대경로


4) 파일 리스트만 읽는게 있다면 최곤데...

 

역시 있다!!!

var path = require('path');
console.log(path.normalize('C:\Windows\system32'));

var rootPath1 = path.dirname('C:\Windows\system32');
console.log('root path1 : '+rootPath1);//return c:\

var rootPath2 = path.join('c:\\','windows','system32');
console.log('root path2 : '+rootPath2);
//return 이건 제대로 리턴함.
//하지만 안타깝게도..'c:\node\a\windows\Music'
//실행시킨 경로 + 더해가는방식임...


//var process = require('process'); //process는 전역객체인듯..
process.chdir('c:\\windows');//됫당!!


Path라서 path일줄 알았지만, 

현재 경로에서 타고 들어갈때는 path를 사용하는 맞지만, 

 Root를 변경해야할 경우(ex C:\에서 D:\로 갈아타야할 경우가튼) 

process를 통해 process.chdir를 사용해야한닷!!!



6) 자, 그럼 완성본!! 오~!!! 할렐루야~!!!

Root Path를 변경한 후, 그에 대한 파일들을 읽어 오는 것을 확인 할 수 있당!!

이제 이것을 Tree 구조의 JSON형태로만 만들어 나타내면

View단은 완료!!



//var process = require('process');
process.chdir('c:\\windows');
console.log(process.cwd());

var fs = require('fs');
var results = [];
fs.readdir('.',function(err,list){
	if(err) throw err;
	console.log('dir length : '+list.length);
	list.forEach(function(file){
		fs.stat(file,function(err, stat){
			if(err) throw err;
			console.log('file : '+file);
			console.log('isFile : '+stat.isFile()+' , isDir : '+stat.isDirectory());
		});
	});
});
/**
	그외 짬찌~
	Network
*/
var net = require('net');
var server = net.createServer(function(socket){
	console.log('Server Created');
	socket.on('end',function(){
		console.log('Server die');
	});

	socket.write('hello \r\n');//캐리쥐 리턴과 개행처리
});

server.listen(8124,function(){
	console.log('%d connection',server.address().port);
});


/**
	Child Process
*/
var exec = require('child_process').exec;
exec('dir',function(error,stdout,stderr){
	console.log('stdout : '+stdout);
	console.log('stderr : '+stderr);
	if(error!==null){
		console.log('exec error:'+error);
	}
});

다른 카테고리의 글 목록

웹 개발/자바스크립트 기초 카테고리의 포스트를 톺아봅니다