Menu
CoddyTech

파일 읽기

Coddy Node.js 여정의 Node.js 기초 섹션에 포함된 레슨. 33개 중 12번째.

실행할 때마다 같은 세 개의 메모로 시작합니다. 메모가 메모리에만 저장되어 있기 때문입니다.

node:fs의 readFileSync(path, 'utf8')는 파일을 문자열로 읽습니다. 메모 파일에는 JavaScript 배열과 객체처럼 작성된 데이터 형식인 JSON이 들어 있으며, JSON.parse는 이 텍스트를 배열로 변환합니다. 존재하지 않는 파일을 읽으면 ENOENT 오류가 발생하므로, 먼저 existsSync로 확인하세요. 이 예제에서는 condition ? a : b를 사용합니다. 조건이 참이면 a를, 거짓이면 b를 반환합니다.

import { existsSync, readFileSync } from 'node:fs';

const scores = existsSync('scores.json')
    ? JSON.parse(readFileSync('scores.json', 'utf8'))
    : [];
console.log(scores.length);

'utf8'를 지정하지 않으면 문자열 대신 파일의 원시 바이트인 Buffer를 얻게 됩니다.

challenge icon

챌린지

쉬움

이 단계에서는 CommonJS Modules에서 작업한 프로젝트 파일(여기에는 legacy/stats.cjs도 포함됨)이 아니라, 강의용으로 준비된 노트 명령줄 도구 프로젝트를 엽니다. 이전 작업은 해당 강의에 그대로 남아 있습니다. store.js를 수정하기 전에 제공된 파일을 읽어 보세요. 이 사본에는 지금까지의 모든 명령과 새로운 clear 명령이 들어 있습니다.

현재는 실행할 때마다 store.js에 작성된 똑같은 노트 세 개로 시작합니다. 노트는 파일에서 가져와야 합니다. 파일은 notes.json이며, Files에서 열 수 있습니다.

  1. store.js에서 고정된 노트 세 개를 바꾸세요. 저장소의 notes에는 notes.json에 저장된 배열이 들어 있어야 합니다. 파일을 텍스트로 읽은 다음 JSON 텍스트를 배열로 변환하세요.
  2. notes.json이 없으면 오류와 함께 중단하는 대신 저장소가 빈 배열로 시작해야 합니다. 파일을 읽기 전에 파일이 있는지 확인하세요.

notes.json에는 노트 두 개가 들어 있으므로 node notes.js list를 실행하면 다음과 같이 출력됩니다.

Notes for you
1. Buy milk
2. Call Ada

notes.json이 없으면 다음과 같이 출력됩니다.

Notes for you
No notes yet

store.js만 변경하면 됩니다. 저장소가 비어 있을 때 No notes yet를 출력하는 코드는 이미 notes.js에 있습니다.

직접 해보기: $ node notes.js 뒤의 입력 상자에 list를 입력하고 Enter를 누르세요. 파일에 있는 노트 두 개가 표시됩니다. 그런 다음 clear를 입력하세요. 이 명령은 이미 notes.js에 있습니다. notes.json을 삭제하고 Deleted notes.json을 출력합니다. 다시 list를 입력하면 No notes yet가 표시됩니다. ‘확인’을 누르기 전에 ‘Reset files’를 눌러 notes.json을 복원하세요. 확인하려면 이 파일이 필요합니다.

직접 해보기

// 이 목록 대신 notes.json에서 메모를 불러오세요.
const store = {
    notes: ['Buy milk', 'Call Ada', 'Water the plants'],
    add(text) {
        this.notes.push(text);
        return this.notes.length;
    },
};

export default store;
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Node.js 기초의 모든 레슨

직접 연습해 보세요: Express 플레이그라운드