fs module은 별도의 설치를 하지 않아도, node.js 상에서 쓸 수 있는 모듈이다.
node와 함께 번들링 되어 있는 모듈로, require('') 방식으로 사용할 수 있다.
fs 말고 비슷한 모듈로는 http, url, path 등이 있다.
fs module
파일처리와 관련된 전반적인 작업을 하는 모듈을 말한다.
import fs from "fs" 이런 방식으로 모듈을 파일 최상단에 import 해준다.
(물론 const fs = require("fs") 도 된다)
동기와 비동기 형식
Sync라는 이름이 붙어있으면, 동기적 방식이다.
동기적인 방식을 사용하면, 파일을 읽으면서 다른 작업을 동시에 할 수가 없다.
파일처리의 대표적인 동기적 예라면, 서버 시작 시 설정 파일을 읽는다던가 하는 작업같은 경우는 동기적으로 하면 좋고,
파일을 읽고나서여야만 그 결과값에 의해 작동이 되게끔 만들 때 사용하면 좋다.
비동기적인 방식을 사용하면 파일을 읽으면서 다른 작업도 동시에 수행할 수 있다.
하지만, 비동기 함수는 항상 마지막 파라미터가 수행 완료 시 호출할 콜백함수로 작성되어야 한다.
함수 안의 인자들
fs.readFile로 예를 들었을 때,
fs.readFile(filename, [options], callback()=>{});
같은 경우, filename은 불러올 파일의 경로이고, string / buffer / URL / integer 타입이 올 수 있다.
[options] 은 가지고 오는 데이터를 어떻게 인코딩을 정해주는 인자이다. 생략이 가능한 인자이지만, 주로 utf8을 적어준다.
비동기적 방식의 경우 하나의 인자를 더 받는데, callback 함수로 callback(err, data) 를 인자로 받는다.
readFile (읽기 파일)
fs.readFile(filename, [options], callback)
- filename의 파일을 [options]의 방식으로 읽은 후 callback으로 전달된 함수를 호출합니다.(비동기적)
fs.readFileSync(filename, [options])
- filename의 파일을 [options]의 방식으로 읽은 후 문자열을 반환합니다. (동기적)
writeFile (쓰기 파일)
fs.writeFile(filename, data, [options], callback)
- filename의 파일에 [options]의 방식으로 data 내용을 쓴 후 callback 함수를 호출합니다. (비동기적)
fs.writeFileSync(filename, data, [options])
- filename의 파일에 [options]의 방식으로 data 내용을 씁니다. (동기적)
예외 처리 방식
- 동기적 방식 예외 처리
동기적 방식에서는 try - catch 구문으로 예외를 처리한다. - 비동기적 방식 예외 처리
callback 함수의 매개변수 err에 전달되므로 err, data를 매개변수로 지정하고 err로 처리한다.
'NodeJS' 카테고리의 다른 글
node.js - PM2 프로세스 매니저로 무중단 서비스 (typescript 연동) (0) | 2023.02.20 |
---|---|
node.js - node schedule / cron (스케줄 업무 자동화) (0) | 2023.02.20 |