프로그램을 다루다 보면 

파일을 읽고 무언가 해야 하는 경우가 종종 생깁니다. 

이때 흔히 사용하는 함수는 readFile() 함수 입니다 .

fs.readFile(filename, [options], callback);
이 함수의 초간단 사용법은 다음과 같습니다. 
--[fs_readFile.js]-------------------------------------------------------------------------
var fs = require('fs');

fs.readFile('./fs_readFile.js', function (err, data) {
 if (err) throw err;
 console.log(data.toString());
});
-----------------------------------------------------------------------------------------------

readFile() 함수는 기본적으로 세가지 아규먼트 인자를 받게 됩니다 .

첫번째는 읽고자 하는 파일이름

두번째는 읽을 때 옵션 , 하지만 이것은 생략이 가능합니다. 

세번째는 파일이 읽혀진 후 호출될 함수..

readFile() 함수는 읽은 후 호출하는 함수는 

err 과 data 라는 두가지 아규먼트 인자로 받게 됩니다. 

function (err, data) {
}
이때 data 는 옵션에 특별한 형식을 지정하지 않았다면 buffer 타입이 됩니다. 

즉 문자열이 아니 것이죠..

만약 문자열 형태로 받고 싶다면 다음과 같이 옵션을 주시면 됩니다. 

--[fs_readFile_encoding_utf8.js]-------------------------------------------------------------------------
var fs = require('fs');

fs.readFile('./fs_readFile.js', { encoding : 'utf8' } , function (err, data) {
 if (err) throw err;
 console.log(data);
});
-----------------------------------------------------------------------------------------------
이 encoding 방식으로 지정가능 한것은 'ascii' , 'utf8' , 'base64' 가 있습니다. 
마지막으로 에러가 나면 어떻게 될까요?

가장 간단한 예는 일단 파일이 없어서 읽지 못하는 경우를 보겠습니다.

--[fs_readFile_error.js]-------------------------------------------------------------------------
var fs = require('fs');

fs.readFile('no_file', function (err, data) {
 console.log( 'err = %j', err );
});
-----------------------------------------------------------------------------------------------

실행해 보면 다음과 같이 나옵니다. 

$ node fs_readFile_error.js
err = {"errno":34,"code":"ENOENT","path":"no_file"}

메세지를 보시면 알수 있듯이 에러에 대한 정보가 있습니다. 

이 정보를 이용하여 맞는 처리를 하면 되는 것이죠..
이 함수는 파일 데이터를 한꺼번에 읽어와 버립니다. 

이점이 편리한 장점인데

단점은 파일 크기가 크면 data 가 파일 크기 만큼의 공간을 차지 하는 것이 단점이 되겠죠..

이 방식은 작은 파일을 쉽게 다룰 때 쓰는 것이 좋습니다.