Menu
CoddyTech

ファイルの書き込み

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

add はプログラムが終了するとすぐにメモを忘れてしまいます。

writeFileSync(path, text) はファイルを書き込み、そこにあった内容をすべて置き換えます。JSON.stringify は配列を JSON テキストに変換し、null, 2 は2つのスペースでインデントするので、Files で読みやすくなります。

import { writeFileSync } from 'node:fs';

const scores = [12, 40];
scores.push(31);
writeFileSync('scores.json', JSON.stringify(scores, null, 2));

ファイルには常に配列全体が保存されます。メモを読み込み、1つ追加して、すべてを書き戻します。store.js では、add は store オブジェクトのメソッドです。メソッド内では、this はオブジェクトそのものなので、this.notes は store の配列です。配列そのものを渡すとエラーになります。ファイルにはテキストが保存されるためです。

challenge icon

チャレンジ

簡単

このステップでは、ファイルの読み込みで作成したプロジェクトファイル(store.jsを含む)ではなく、コースで用意されたメモ用コマンドラインツールのプロジェクトを開きます。以前の作業は、元のレッスンに残っています。store.jsを編集する前に、用意されたファイルを読んでください。このコピーには、ファイルを読み込むメモツールが含まれています。

addは、プログラムが終了すると、今もメモを忘れてしまいます。すべてのメモをnotes.jsonに保存するようにして、次の実行時にlistで表示されるようにしましょう。

  1. store.jsで、addが新しいメモを配列に追加した後、配列全体をJSONとしてnotes.jsonに書き戻します。新しいメモだけではなく、すべてのメモを書き込んでください。ファイルに書き込むと、そこにあった内容はすべて置き換えられます。Filesで読みやすいように、JSONは2つのスペースでインデントします。
  2. notes.jsのadd分岐で、Adding: ...を出力する行を置き換えます。今度はSaved note 、新しいメモの番号、ピリオドだけを出力します。notes.jsonが次の2つのメモで始まる場合、node notes.js add Buy breadは次のように出力します:
    Saved note 3.
    その後、notes.jsonには次の内容が入ります:
    [
      "Buy milk",
      "Call Ada",
      "Buy bread"
    ]
  3. notes.jsonがない場合、addがファイルを作成します。clearの後にnode notes.js add Call Adaを実行すると、Saved note 1.が出力され、その後listを実行すると1. Call Adaが表示されます。

試してみましょう:$ node notes.jsの後にあるボックスにadd Buy breadと入力して、Enterキーを押します。Saved note 3.と表示されます。listと入力します。新しい実行であっても、Buy breadはメモ3として表示されます。Filesでnotes.jsonを開き、保存された配列を確認してください。次に、ファイルを削除するclearと、add Call Adaを入力します。Saved note 1.と表示されます。

自分で試してみよう

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

const file = 'notes.json';

const store = {
    notes: existsSync(file) ? JSON.parse(readFileSync(file, 'utf8')) : [],
    add(text) {
        this.notes.push(text);
        return this.notes.length;
    },
};

export default store;

Node.jsの基礎のすべてのレッスン

自分で練習してみよう: Expressプレイグラウンド