[Nodejs] fs (파일 시스템) 읽기, 쓰기, 붙여쓰기, 삭제 등등..
먼저 fs는 file system의 약자입니다. api 문서 링크 : http://nodejs.org/api/fs.html
상당히 많은 함수를 포함하고 있는 파일시스테 모듈이지만 모듈의 반절은 권한관련입니다
(node.js 의 개발자가 지독한 유닉스 개발자로 알려져 있습니다. 디버깅모듈이 콘솔로 된것만으로도 알수 있겠지요?)
많이 쓰는 모듈 몇가지 예제입니다.
1. 파일 확인
var fs = require('fs'); fs.exists('test1.txt', function (exists) { console.log(exists ? "it's there" : "no exists!"); });
fs.exists() 파일이 존재 하는지 확인합니다. 예제의 경우 test1.txt 파일이 존재 하는지 확인합니다.
2. 파일 생성
var fs = require('fs'); var file = 'test1.txt'; fs.open(file,'w',function(err,fd){ if (err) throw err; console.log('file open complete'); });
fs.open() 해당 파일을 엽니다. 옵션 'w' 의 경우 해당 파일이 없다면 생성합니다.
해당 옵션에 따라 파일의 접근이 달라집니다.
r | 파일을 읽기로 열며 해당 파일이 없다면 에러발생 |
r+ | 읽기/쓰기 상태로 파일을 열며 파일이 없다면 에러 발생 |
w | 쓰기로 파일을 열며 존재 하지 않으면 생성. 파일이 존재하면 내용을 지우고 처음부터 씀. |
w+ | 읽기/쓰기로 열며 존재 하지 않으면 생성. 파일이 존재하면 내용을 지우고 처음부터 씀. |
a | 추가 쓰기로 열며 파일이 존재하지 않으면 만듬. |
a+ | 추가 읽기/쓰기로 열며 파일이 존재 하지 않으면 만듬. |
3. 파일 이름 변경
var fs = require('fs'); fs.rename('test1.txt', 'text2.txt', function (err) { if (err) throw err; console.log('renamed complete'); });
fs.rename() 해당파일의 이름을 변경합니다. 예제는 test1.txt -> test2.txt 로 변경합니다.
해당 파일이 없거나 권한이 없다면 에러가 발생합니다. 또한 변경하려는 이름의 같은 이름의 파일이 존재하면 에러가 발생합니다.
4. 파일 삭제
var fs = require('fs'); fs.unlink('text2.txt', function (err) { if (err) throw err; console.log('successfully deleted text2.txt'); });
fs.unlink() 파일을 삭제 합니다. 예제의 경우 test2.txt 파일을 삭제 합니다.
해당 파이 없거나 권한이 없다면 에러가 발생합니다.
5.파일 읽기
var fs = require('fs'); fs.readFile('test1.txt', 'utf8', function(err, data) { console.log(data); });
fs.readFile() 해당 파일을 읽습니다. 예제의 경우 test1.txt 파일을 읽고 콘솔로 출력합니다.
6. 파일 쓰기
var fs = require('fs'); var data = 'file system example!!'; fs.writeFile('text1.txt', data, 'utf8', function(error){ console.log('write end') });
fs.writeFile() 해당파일에 내용을 씁니다. 예제의 경우 test1.txt파일에 data의 내용을 씁니다.
만일 파일이 존재 하지 않으면 파일을 생성후 내용을 씁니다. 파일의 내용을 이어서 쓰진 않습니다.
7.파일 이어서 쓰기
var fs = require('fs'); fs.appendFile('test1.txt', 'data to append', function (err) { if (err) throw err; console.log('The "data to append" was appended to file!'); });
fs.appendFile() 해당 파일에 내용을 이어서 씁니다. 예제의 경우 test1.txt 에 'data to append' 를 이어서 씁니다. 파일이 없을경우 새로 생성하여 씁니다.
대부분의 함수가 파일이 없을 경우 에러를 발생시키므로 먼저 파일을 있는지 확인하거나 파일을 open()를 통하여 쓰기 모드로 연상태에서 해당 함수들을 실행 시킵니다. 다음은 파일 읽기를 할시 파일이 업다면 생성하고 끝내는 예제 입니다.
var fs = require('fs'); var path = 'test1.txt'; fs.open(path,'a+',function(err,fd){ if(err) throw err; if(fd == '9'){ console.log('file create.'); }else{ fs.readFile(path, 'utf8', function(err, data) { console.log(data); }); } });
ref : http://uiandwe.tistory.com/933