Menu
CoddyTech

ファイルの読み込み

CoddyのNode.jsジャーニー「Node.jsの基礎」セクションの一部。レッスン 12/33。

実行するたびに同じ3つのメモから始まります。メモはメモリ上にしか存在しないためです。

node:fsのreadFileSync(path, 'utf8')は、ファイルを文字列として読み込みます。メモファイルにはJSONが格納されます。これはJavaScriptの配列やオブジェクトのように書かれたデータ形式で、JSON.parseはそのテキストを配列に変換します。存在しないファイルを読み込むとENOENTエラーが発生するため、まずexistsSyncで確認します。この例ではcondition ? a : bを使っています。これは、条件がtrueならaを、falseなら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 に書かれた同じ3つのメモから始まります。メモはファイルから読み込むようにします。ファイルは notes.json で、Files で開けます。

  1. store.js で、固定された3つのメモのリストを置き換えます。ストアの notes には、notes.json に保存された配列を格納します。ファイルをテキストとして読み込み、その後、JSON テキストを配列に変換します。
  2. notes.json が存在しない場合、ストアはエラーで停止するのではなく、空の配列で始まるようにします。読み込む前に、ファイルが存在することを確認してください。

notes.json には最初から2つのメモがあるため、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 を押します。ファイルにある2つのメモが表示されます。次に clear と入力します。このコマンドはすでに notes.js にあります。notes.json を削除し、Deleted notes.json と表示します。もう一度 list と入力すると、No notes yet が表示されます。「確認」を押す前に、「ファイルをリセット」を押して 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プレイグラウンド