Node.js비동기

비동기 파일 I/O

`fs/promises`와 `top-level await`를 이용한 비동기 파일 읽기/쓰기 패턴을 정리합니다.

마지막 수정 2026년 3월 17일

기본 패턴

javascript
import { readFile, writeFile } from "node:fs/promises";

async function loadConfig() {
  const raw = await readFile(new URL("./config.json", import.meta.url), "utf-8");
  return JSON.parse(raw);
}

await writeFile("./log.txt", "시작 " + new Date().toISOString());

설명

  • fs/promisesPromise 기반 API로 await과 같이 쓰기 좋습니다.
  • import.meta.url + new URL(..., import.meta.url) 패턴은 ESM에서 상대 경로를 계산하는 표준 방식입니다.
  • writeFilereadFile을 순차적으로 await하면 블로킹 없이 순서 보장도 가능합니다.

짧은 예제

javascript
const data = await Promise.all(
  ["a.txt", "b.txt"].map((name) => readFile(name, "utf-8")),
);
console.log(data.join(", "));

빠른 정리

함수설명
readFile(path, enc)비동기 읽기
writeFile(path, data)비동기 쓰기
mkdir(path, { recursive: true })중첩 폴더 생성

주의할 점

writeFile은 디렉터리 없이 쓰면 실패하니 mkdir을 먼저 쓰거나 recursive 플래그를 확인하세요.