-
728x90
File System
파일 시스템에 접근하는 모듈로 파일을 생성, 삭제, 읽기, 쓰기가 가능하다.
따라서 파일 시스템 접근 시 보안에 신경써야 한다.
const fs = require('fs');
파일 읽기
const fs = require("fs"); fs.readFile("./readme.txt", (err, data) => { // Node 콜백은 항상 err와 data 순서 if (err) { throw err; } console.log(data.toString()); });
readFile()메서드를 이용해 파일을 읽을 수 있다.
첫번째 인자에 파일 경로, 두번째 인자에 콜백함수를 갖는다.
toString()을 해주는 이유는 Buffer 형태로 출력되기 때문
위 코드는 콜백함수이지만, promises 속성으로 .then 키워드 사용이 가능하다.
const fs = require("fs").promises; fs.readFile("./readme.txt") .then((data) => { console.log(data.toString()); }) .catch((err) => { throw err; });
파일 쓰기
const fs = require("fs").promises; fs.writeFile("./writeme.txt", "글 입력하기") .then(() => {}) .catch((err) => { throw err; });
writeFile() 메서드를 이용해서 파일을 생성 후 쓰기가 가능하다.
첫번째 인자로 파일명, 두번째 인자로 data를 넣어주면 해당 데이터의 파일이 생성된다.
동기와 비동기
callback, promise는 비동기방식(작업이 끝날 때 까지 기다리지 않고 다른 작업 수행) 이기 때문에 순서대로 실행이 되지 않지만,
fs는 동기 메서드를 지원하기 때문에 순서대로 실행이 가능하다.
const fs = require("fs"); let data = fs.readFileSync("./readme.txt"); console.log("1번", data.toString()); data = fs.readFileSync("./readme.txt"); console.log("2번", data.toString()); data = fs.readFileSync("./readme.txt"); console.log("3번", data.toString());
readFile뒤에 Sync를 붙여주면 동기적으로 실행이 되어 순서대로 파일을 읽을 수 있다. (하지만 처리할 게 많을 수록 비효율적)
예외 처리
노드는 싱글스레드라 스레드가 멈추면 프로세스가 멈추기 때문에 에러처리가 필수!
동기함수는 에러가 발생할 만한 곳에 try catch문으로 감싸고, 비동기 함수는 콜백함수의 매개변수로 에러를 전달한다.
'Node.js' 카테고리의 다른 글
[Node.js] bcrypt 비밀번호 암호화 하기 (0) 2023.05.25 [Node.js] Express 라우터 분리하기 (0) 2023.04.13 [Node.js] path 모듈 (0) 2023.04.10 [Node.js] Express 미들웨어란? (0) 2023.04.06 [Node.js] Express.js 서버 구축, 라우팅 (0) 2023.04.05 댓글