Node.js 파일 시스템 (fs 모듈)
이 토픽을 마치면
Node.js에서 파일을 읽고, 쓰고, 삭제하는 코드를 작성할 수 있습니다.
브라우저에서는 못하는 일
브라우저의 JavaScript는 보안상 내 컴퓨터의 파일에 접근할 수 없습니다. 하지만 Node.js는 서버 환경이기 때문에 파일을 자유롭게 읽고 쓸 수 있습니다. 이 기능을 제공하는 것이 fs(File System) 모듈입니다.
javascript
// fs 모듈 불러오기
const fs = require("fs");
// 파일 읽기 (동기 방식 — 읽을 때까지 멈춤)
const data = fs.readFileSync("memo.txt", "utf8");
console.log(data);require("fs")는 Node.js에 내장된 모듈을 불러오는 방식입니다. 별도 설치가 필요 없습니다. "utf8"을 빼먹으면 Buffer(바이너리 데이터)가 반환되어 글자 대신 숫자가 보입니다.
파일 쓰기와 추가
javascript
const fs = require("fs");
// 파일 쓰기 — 파일이 없으면 생성, 있으면 덮어씀
fs.writeFileSync("output.txt", "첫 번째 줄\n");
// 파일에 내용 추가 (덮어쓰지 않음)
fs.appendFileSync("output.txt", "두 번째 줄\n");
// 확인
const result = fs.readFileSync("output.txt", "utf8");
console.log(result);
// 첫 번째 줄
// 두 번째 줄writeFileSync는 기존 내용을 완전히 덮어씁니다. 기존 내용을 유지하면서 추가하려면 appendFileSync를 쓰세요.
파일 존재 확인과 삭제
javascript
const fs = require("fs");
// 파일 존재 확인
if (fs.existsSync("output.txt")) {
console.log("파일이 존재합니다");
// 파일 삭제
fs.unlinkSync("output.txt");
console.log("삭제 완료");
}
// 디렉토리(폴더) 만들기
if (!fs.existsSync("logs")) {
fs.mkdirSync("logs");
}
// 디렉토리 내 파일 목록
const files = fs.readdirSync(".");
console.log(files); // ["index.js", "logs", ...]여기서 쓴 메서드는 모두 Sync(동기)가 붙어 있습니다. 파일 작업이 끝날 때까지 다음 코드가 실행되지 않습니다. 실제 서버에서는 비동기 버전(readFile, writeFile — Sync 없음)을 쓰는데, 이것은 동기 vs 비동기에서 다룹니다.