Node.js 파일 I/O
Node.js에서 파일 입출력 구현하는 방법 정리
Node.jsNode.js는 내장
fs모듈을 통해 파일 읽기/쓰기/삭제/폴더 관리 기능을 제공
파일 읽기
비동기 방식 (readFile)
const fs = require("fs");
fs.readFile("hello.txt", "utf8", (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data); // 파일 내용 출력
});
- 파일 내용을
utf8문자셋으로 읽어오고, 콜백 함수에서 결과 처리 - 에러가 있으면 err로 전달
동기 방식 (readFileSync)
const fs = require("fs");
const data = fs.readFileSync("hello.txt", "utf8");
console.log(data);
- 코드가 여기서 멈추고, 파일을 다 읽으면 다음 코드 진행
파일 쓰기
비동기 방식 (writeFile)
fs.writeFile("output.txt", "파일에 저장할 내용", "utf8", (err) => {
if (err) {
console.error(err);
return;
}
console.log("저장 성공!");
});
동기 방식 (writeFileSync)
fs.writeFileSync("output.txt", "저장할 데이터", "utf8");
console.log("저장 성공!");
- 작은 프로젝트, 빠른 구현 시 동기방식이 더 쉽고 사용 편리
기타 자주 쓰는 기능
디렉토리 만들기
fs.mkdirSync("New Folder");
파일 존재 검사
const exists = fs.existsSync("filename");
파일/폴더 삭제
fs.unlinkSync("filename");
fs.rmdirSync("foldername");
Promise/async-await 스타일
fs.promises 모듈을 사용하면 비동기 코드도 직관적으로 작성 가능하다.
const fsp = require("fs").promises;
async function saveFile() {
await fsp.writeFile("demo.txt", "Hello!", "utf8");
const data = await fsp.readFile("demo.txt", "utf8");
console.log(data);
}
saveFile();