백엔드-노드

노드 실전

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

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개
댓글을 작성하려면 로그인하세요.
아직 댓글이 없습니다.