-
4-3 파일 다루기back-end/nodejs 2019. 7. 15. 09:22
- 노드의 경우 동기식, 비동기식 IO를 둘 다 제공한다.
- 파일 시스템에 접근하기 위해 fs 모듈을 사용한다.
readfile(filename, encoding, callback) 비동기식으로 파일을 읽는다 readfileSync(filename, encoding) 동기식으로 파일을 읽는다 writefile(filename, data, encoding, callback) 비동기식으로 파일을 쓴다. writefile(filename, data, encoding) 동기식으로 파일을 쓴다 1) 파일 읽기
- 비동기
var fs = require('fs'); fs.readfile('./doit.txt','utf8', function(err, data) { console.log(data); });
- 동기
var fs = require('fs'); var data = fs.readFileSync('./doit.txt','utf8'); console.log(data);
2) 파일 쓰기
- 비동기
var fs = require('fs') fs.writeFile('./do.txt','hello world', function(err) { if(err) console.log(err); });
- 동기
var fs = require('fs') fs.writeFilesSync('./do.txt','hello world');
동기식과 비동기식으로 읽는 차이는 무엇일까? 동기식의 경우 데이터를 읽어오는 동안 다른 동작은 하지 않는다.
비동기식의 경우 파일을 읽어드리면서 다음 코드를 진행한다. 즉 상황에 맞게 사용하면 된다.
조금 응용해보자면 동기식의 경우 데이터를 읽어오는 동안 다른 동작은 하지 않기 때문에 프로그램이 느려질 수 있다.
3) 파일 읽거나 수정하기
파일을 수정하기 위해서는 먼저 파일을 열어야 한다. 먼저 open() 메서드로 파일을 연 후 read(), write() 메서드를 사용하여 파일을 읽고 수정한다. 모든 작업이 끝났다면 close() 메서드로 파일을 닫는다.
순서 open() → read(), write() → close()
var fs = require('fs'); fs.open('./do.txt','w', function(err,fd){ if(err) throw err; var buf = new Buffer('사랑해♥\n'); fs.write(fd, buf, 0,buf.length,null, function(err, written, buffer){ if(err) throw err; fs.close(fd, function(){ console.log('종료'); }) }) })
- fd는 무엇인가? 파일 디스크립터의 줄임말로 open 한 파일의 순번을 가지고 있다고 생각하자.
728x90'back-end > nodejs' 카테고리의 다른 글
npm ? npx? (0) 2021.09.10 [Node] 회원가입, 로그인, 로그아웃 구현하기 (0) 2019.12.26 4-2 이벤트 이해하기 (0) 2019.07.15 javascript 함수 선언하기 (0) 2019.07.14 3.4 프로토타입 객체 (0) 2019.07.13