백엔드-노드

노드 실전

강사: 오백엔드 · 작성자: 이종춘 · 작성일: 2026-07-08 06:56:43 · 조회수: 4

8강. 파일 읽기와 쓰기 (fs 모듈 심화)
목록으로
8강. 파일 읽기와 쓰기 (fs 모듈 심화)

이번 강의에서는 Node.js의 fs(File System) 모듈을 활용하여 파일과 폴더를 다루는 방법을 배웁니다.

목표: 파일을 생성하고, 읽고, 수정하고, 삭제하며 동기(Sync)와 비동기(Async)의 차이를 이해합니다.

1. fs(File System)란?

fs는 파일과 폴더를 관리하는 Node.js의 내장 모듈입니다.

const fs = require("fs");

할 수 있는 작업

파일 생성
파일 읽기
파일 수정
파일 삭제
폴더 생성
폴더 삭제
JSON 파일 관리

2. 동기(Sync)와 비동기(Async)

Node.js에는 두 가지 방식이 있습니다.

동기(Synchronous)

작업이 끝날 때까지 기다립니다.

파일 읽기


완료



다음 코드 실행
비동기(Asynchronous)

기다리지 않고 다음 코드를 실행합니다.

파일 읽기 시작


다음 코드 실행



읽기 완료

Node.js는 비동기 방식을 많이 사용합니다.

3. writeFileSync()

파일 생성

const fs = require("fs");

fs.writeFileSync("hello.txt", "안녕하세요.");

실행 후

project

├── hello.txt
└── index.js

4. writeFile()

비동기 방식입니다.

const fs = require("fs");

fs.writeFile("hello.txt", "Node.js", (err) => {

if(err){

console.log(err);

return;
}

console.log("저장 완료");

});

5. readFileSync()

동기 방식

const fs = require("fs");

const data = fs.readFileSync("hello.txt", "utf8");

console.log(data);

결과

Node.js

6. readFile()

비동기 방식

const fs = require("fs");

fs.readFile("hello.txt", "utf8", (err, data)=>{

if(err){

console.log(err);

return;

}

console.log(data);

});

7. appendFileSync()

내용 추가

const fs = require("fs");

fs.appendFileSync("hello.txt","\nExpress");

결과

Node.js
Express

8. unlinkSync()

파일 삭제

const fs = require("fs");

fs.unlinkSync("hello.txt");

9. existsSync()

파일 존재 여부 확인

const fs = require("fs");

if(fs.existsSync("hello.txt")){

console.log("파일 있음");

}else{

console.log("파일 없음");

}

10. mkdirSync()

폴더 생성

const fs = require("fs");

fs.mkdirSync("images");

결과

project

├── images
├── index.js
└── package.json

11. readdirSync()

폴더 안 목록 보기

const fs = require("fs");

const files = fs.readdirSync("./");

console.log(files);

예시

[
'images',
'index.js',
'package.json'
]

12. rmdirSync()

폴더 삭제

const fs = require("fs");

fs.rmdirSync("images");

참고: 최신 Node.js에서는 fs.rmSync() 사용을 권장합니다.

fs.rmSync("images", { recursive: true, force: true });

13. JSON 저장하기

객체 만들기

const user = {

name:"커사맨",
age:50

};

JSON 저장

const fs = require("fs");

fs.writeFileSync(

"user.json",

JSON.stringify(user)

);

14. JSON 읽기
const fs = require("fs");

const data = fs.readFileSync("user.json","utf8");

const user = JSON.parse(data);

console.log(user.name);
console.log(user.age);

15. 실무 예제

회원 정보 저장

const fs = require("fs");

const member = {

id:"admin",
password:"1234"

};

fs.writeFileSync(

"member.json",

JSON.stringify(member,null,2)

);

생성 결과

{
"id": "admin",
"password": "1234"
}

16. 실습 1

memo.txt 생성

const fs = require("fs");

fs.writeFileSync("memo.txt","오늘 Node.js 공부");

17. 실습 2

memo.txt 읽기

const fs = require("fs");

const memo = fs.readFileSync("memo.txt","utf8");

console.log(memo);

18. 실습 3

memo.txt에 내용 추가

const fs = require("fs");

fs.appendFileSync("memo.txt","\nExpress 공부");

19. 실습 4

사용자 정보를 JSON으로 저장

const fs = require("fs");

const user = {

name:"홍길동",
age:30

};

fs.writeFileSync(

"user.json",

JSON.stringify(user,null,2)

);

20. 이번 강의 핵심 정리
함수 설명
writeFileSync() 파일 생성(동기)
writeFile() 파일 생성(비동기)
readFileSync() 파일 읽기(동기)
readFile() 파일 읽기(비동기)
appendFileSync() 내용 추가
unlinkSync() 파일 삭제
existsSync() 파일 존재 확인
mkdirSync() 폴더 생성
readdirSync() 폴더 목록 보기
rmSync() 폴더 삭제
JSON.stringify() 객체 → JSON 문자열
JSON.parse() JSON 문자열 → 객체
실무 팁

실무에서는 데이터베이스를 사용하지만, 작은 프로젝트나 설정 파일은 JSON으로 관리하는 경우가 많습니다.

예시

project

├── config.json
├── users.json
├── settings.json
├── package.json
└── index.js

또한, 새로운 코드에서는 비동기 방식(readFile, writeFile)이나 fs/promises를 사용하는 것이 일반적입니다. 동기 방식(Sync)은 학습과 간단한 스크립트에서는 이해하기 쉽지만, 서버에서는 요청을 오래 멈추게 할 수 있기 때문입니다.

실습 미션

간단한 메모장 프로그램을 만들어 보세요.

기능

memo.txt 생성
메모 추가
메모 읽기
메모 삭제
메모 파일 존재 여부 확인

이 미션을 완료하면 fs 모듈의 핵심 기능을 대부분 익히게 됩니다.
#8강. 파일 읽기와 쓰기 (fs 모듈 심화)

첨부 파일

0개
첨부된 파일이 없습니다.

댓글 / 답글

0개
댓글을 작성하려면 로그인하세요.
아직 댓글이 없습니다.