강좌 & 팁
글 수 2,412
2014.08.04 12:57:58 (*.134.169.166)
44467
프로그램을 다루다 보면
파일을 읽고 무언가 해야 하는 경우가 종종 생깁니다.
이때 흔히 사용하는 함수는 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 가 파일 크기 만큼의 공간을 차지 하는 것이 단점이 되겠죠..
이 방식은 작은 파일을 쉽게 다룰 때 쓰는 것이 좋습니다.