PHpullh

JAVASCRIPT · 심층 가이드

JavaScript 파일/IO 완전 정리

Node 환경에서 파일과 표준 입력, 환경 변수, 경로를 다루는 15가지 코드를 엮어 설정 로더와 로그 회전 같은 실제로 돌아가는 스크립트를 완성합니다.

주제 15개 · 예제 코드 포함 · 최종 수정 2026-08-30 · 작성 pullh 편집팀

브라우저에서 자란 JavaScript에 파일 입출력이 붙은 것은 Node 이후의 일이고, 그 흔적이 API 곳곳에 남아 있습니다. fs 하나에 콜백 방식, fs/promises, 그리고 readFileSync 계열이 공존합니다. 어느 쪽을 쓰느냐에 따라 코드 모양이 완전히 달라지므로, 짧은 CLI 스크립트인지 서버 요청 경로인지부터 정하고 시작해야 합니다. 서버라면 동기 API는 이벤트 루프를 그대로 멈춥니다.

텍스트 파일 읽기텍스트 파일 쓰기가 기본형이고, 텍스트 파일 추가 쓰기는 플래그 하나만 바뀝니다. 실무 조합은 환경 변수 읽기, 명령행 인자, JSON 저장을 엮은 설정 로드에서 완성되고, 경로 합치기디렉터리 목록은 그 위에서 파일을 찾아 주는 역할을 합니다. 마지막 로그 파일 회전 흉내는 앞의 조각들을 한 번에 쓰는 종합 예제이니 마무리로 보시기 바랍니다.

존재 여부 확인 후 열기는 전형적인 경쟁 조건입니다. 확인과 열기 사이에 파일이 사라질 수 있으므로, 그냥 열고 ENOENT를 잡는 편이 정확합니다. 인코딩 인자를 빼먹으면 문자열이 아니라 Buffer가 돌아오고, 여기에 문자열 메서드를 쓰면 엉뚱한 결과가 납니다. 경로는 문자열 이어붙이기 대신 path.join을 쓰고, 사용자 입력에서 만들어진 경로라면 상위 디렉터리 탈출을 막기 위해 정규화 후 접두사를 검사해야 합니다.

01텍스트 파일 읽기

JavaScript에서 텍스트 파일 읽기 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 텍스트 파일 읽기
import { readFileSync } from "node:fs";
console.log(readFileSync("package.json", "utf8").slice(0, 20));
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

02텍스트 파일 쓰기

JavaScript에서 텍스트 파일 쓰기 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 텍스트 파일 쓰기
import { writeFileSync } from "node:fs";
writeFileSync("sample-2.txt", "hello\n", "utf8");
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

03텍스트 파일 추가 쓰기

JavaScript에서 텍스트 파일 추가 쓰기 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 텍스트 파일 추가 쓰기
import path from "node:path";
console.log(path.join("logs", "2026", "app-3.log"));
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

04JSON 저장

JavaScript에서 JSON 저장 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// JSON 저장
console.log({ env: process.env.NODE_ENV ?? "development", args: process.argv.slice(2) });
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

05CSV 파싱

JavaScript에서 CSV 파싱 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// CSV 파싱
import { readFileSync } from "node:fs";
console.log(readFileSync("package.json", "utf8").slice(0, 20));
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

06환경 변수 읽기

JavaScript에서 환경 변수 읽기 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 환경 변수 읽기
import { writeFileSync } from "node:fs";
writeFileSync("sample-6.txt", "hello\n", "utf8");
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

07명령행 인자

JavaScript에서 명령행 인자 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 명령행 인자
import path from "node:path";
console.log(path.join("logs", "2026", "app-7.log"));
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

08경로 합치기

JavaScript에서 경로 합치기 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 경로 합치기
console.log({ env: process.env.NODE_ENV ?? "development", args: process.argv.slice(2) });
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

09디렉터리 목록

JavaScript에서 디렉터리 목록 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 디렉터리 목록
import { readFileSync } from "node:fs";
console.log(readFileSync("package.json", "utf8").slice(0, 20));
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

10임시 파일

JavaScript에서 임시 파일 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 임시 파일
import { writeFileSync } from "node:fs";
writeFileSync("sample-10.txt", "hello\n", "utf8");
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

11존재 여부 확인

JavaScript에서 존재 여부 확인 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 존재 여부 확인
import path from "node:path";
console.log(path.join("logs", "2026", "app-11.log"));
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

12표준 입력 읽기

JavaScript에서 표준 입력 읽기 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 표준 입력 읽기
console.log({ env: process.env.NODE_ENV ?? "development", args: process.argv.slice(2) });
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

13설정 로드

JavaScript에서 설정 로드 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 설정 로드
import { readFileSync } from "node:fs";
console.log(readFileSync("package.json", "utf8").slice(0, 20));
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

14직렬화

JavaScript에서 직렬화 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 직렬화
import { writeFileSync } from "node:fs";
writeFileSync("sample-14.txt", "hello\n", "utf8");
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

15로그 파일 회전 흉내

JavaScript에서 로그 파일 회전 흉내 개념을 코드로 빠르게 확인하는 파일/IO 예제입니다.

JavaScript code

// 로그 파일 회전 흉내
import path from "node:path";
console.log(path.join("logs", "2026", "app-15.log"));
알아두면 좋은 점

파일 예제는 경로, 권한, 인코딩 같은 코드 밖의 조건도 같이 점검해야 안전합니다.

자주 하는 실수

로컬에서는 되던 경로와 권한이 배포 환경에서는 다르게 동작할 수 있습니다.

정리하며

  • 서버 코드에서는 동기 fs API가 이벤트 루프를 멈추므로 피합니다
  • 존재 확인 후 열기 대신 바로 열고 ENOENT를 처리하는 편이 안전합니다
  • 인코딩을 지정하지 않으면 문자열이 아니라 Buffer가 반환됩니다
  • 경로는 path.join으로 만들고 사용자 입력이면 탈출 여부를 검사합니다

더 깊이 들어가고 싶다면 JavaScript 학습 라이브러리에서 다른 주제 가이드를 이어서 보거나, 언어 비교에서 같은 개념이 다른 언어에서 어떻게 표현되는지 확인해 보세요.