반응형
File System 모듈이란?
- 노드에서 파일 처리와 관련된 모듈
File System 모듈 사용 예제
File System 모듈을 이용해 파일 읽기 기능 구현
- main.js 와 같은 경로에 text.txt 파일을 만들고 "Hello!" 라는 문자열을 입력
- main.js 에 다음의 코드 입력 후 실행
// File System 모듈 추출
const fs = require('fs')
// text.txt 파일을 비동기적으로 읽어옴
fs.readFile('text.txt', 'utf8', function (error, data) {
console.log(data)
})
// text.txt 파일을 동기적으로 읽어옴
const text = fs.readFileSync('text.txt', 'utf8')
console.log(text)
결과
File System 모듈을 이용해 파일 쓰기 기능 구현
- main.js에 다음의 코드 입력 후 실행
// File System 모듈 추출
const fs = require('fs')
// tex1.txt 파일에 비동기적으로 쓰기
fs.writeFile('text1.txt', 'Hello!', 'utf8', function(error) {
console.log('비동기적 파일 쓰기 완료')
});
// text2.text 파일에 동기적으로 쓰기
fs.writeFileSync('text2.txt', 'Hello!', 'utf8');
console.log('동기적 파일 쓰기 완료');
결과
- main.js와 같은 디렉토리에 text1.text, text2.txt가 생성되고 둘 다 'Hello!'가 써져 있음
동기, 비동기 개념
- 동기(Synchronous)
- 요청과 결과가 한 자리에서 동시에 일어남
- 요청을 하면 시간이 얼마나 걸리던지 결과가 주어져야 함
- 비동기(Asynchronous)
- 동기식과는 달리 동시에 일어나지 않음
- 요청을 하면 응답을 계속 기다리지 않고 다른 작업을 해도 됨
- 비교
- 동기식의 장점은 비동기식에 비해 설계가 간단하고 직관적임
- 동기식의 단점은 요청과 결과가 동시에 일어나야 되기 때문에 결과가 나올때 까지 다른 작업을 못함
- 비동기식은 요청한 시점부터 결과가 나타나는 시점까지 다른 작업이 가능하기 때문에 자원을 더 효율적으로 사용 가능하다는 장점이 있음
- 위의 파일 쓰기 코드에서 비동기식 작업을 먼저 써줬지만 동기식 작업이 먼저 끝난 이유는 비동기식 작업이 진행되는 동안 동기식 작업이 진행되었기 때문
동기, 비동기의 예외 처리
// 동기식 예외 처리
try{
const data = fs.readFileSync('text.txt', 'utf8');
console.log(data)
} catch(e) {
console.log(e)
}
// 비동기식 예외 처리
fs.readFile('text.txt','utf8', function(error, data) {
if(error) {
console.log(error)
} else {
console.log(data)
}
});
- 위와 같이 동기식 예외 처리에서는 try catch 문을 사용하고 비동기식 예외 처리는 callback 함수를 사용해야 됨
반응형
'Node.js' 카테고리의 다른 글
[Node.js + Vue.js] axios 통신, cors모듈 (0) | 2021.12.02 |
---|---|
[Node.js] 페이징 라우팅 기능, router 분리(모듈화), params, query (0) | 2021.12.01 |
[Node.js] 웹 서버 생성 (0) | 2021.12.01 |
[Node.js] 모듈 생성 및 사용 예제 (0) | 2021.11.30 |
[Node.js] Hello World (0) | 2021.11.30 |