Menu
CoddyTech

Eine Datei lesen

Teil des Abschnitts Node.js-Grundlagen der Node.js-Journey von Coddy. Lektion 12 von 33.

Jeder Durchlauf beginnt mit denselben drei Notizen, weil sie nur im Arbeitsspeicher existieren.

readFileSync(path, 'utf8') aus node:fs liest eine Datei als Zeichenkette. Eine Notizdatei enthält JSON, ein Textformat für Daten, die wie JavaScript-Arrays und -Objekte geschrieben sind, und JSON.parse wandelt diesen Text in ein Array um. Das Lesen einer Datei, die nicht vorhanden ist, löst einen ENOENT-Fehler aus. Prüfe daher zuerst mit existsSync, ob sie existiert. Das Beispiel verwendet condition ? a : b, das a zurückgibt, wenn die Bedingung wahr ist, und b, wenn sie falsch ist.

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

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

Ohne 'utf8' erhältst du einen Buffer, also die rohen Bytes der Datei, statt einer Zeichenkette.

challenge icon

Aufgabe

Einfach

In diesem Schritt wird das vorbereitete Befehlszeilenprogramm für Notizen des Kurses geöffnet, nicht deine Projektdateien aus CommonJS Modules (einschließlich legacy/stats.cjs). Deine frühere Arbeit bleibt in ihrer eigenen Lektion. Lies die bereitgestellten Dateien, bevor du store.js bearbeitest. Diese Kopie enthält alle bisherigen Befehle sowie einen neuen Befehl clear.

Zurzeit beginnt jeder Durchlauf mit denselben drei Notizen, die in store.js stehen. Deine Notizen sollen stattdessen aus einer Datei stammen: notes.json, die du in Files öffnen kannst.

  1. Ersetze in store.js die feste Liste mit drei Notizen. Die notes des Speichers müssen das in notes.json gespeicherte Array enthalten: Lies die Datei als Text und wandle dann den JSON-Text in ein Array um.
  2. Wenn notes.json nicht existiert, startet der Speicher stattdessen mit einem leeren Array, ohne mit einem Fehler abzubrechen. Prüfe, ob die Datei existiert, bevor du sie einliest.

notes.json beginnt mit zwei Notizen. Daher gibt node notes.js list Folgendes aus:

Notes for you
1. Buy milk
2. Call Ada

Wenn notes.json nicht vorhanden ist, gibt es Folgendes aus:

Notes for you
No notes yet

Du änderst nur store.js. notes.js gibt bereits No notes yet aus, wenn der Speicher leer ist.

Probiere es aus: Gib list in das Feld nach $ node notes.js ein und drücke die Eingabetaste. Du siehst die beiden Notizen aus der Datei. Gib dann clear ein. Dieser Befehl ist bereits in notes.js enthalten: Er löscht notes.json und gibt Deleted notes.json aus. Gib erneut list ein: Du siehst No notes yet. Bevor du auf „Prüfen“ drückst, klicke auf „Dateien zurücksetzen“, um notes.json wiederherzustellen, denn die Prüfungen benötigen diese Datei.

Probier es selbst

// Lade die Notizen aus notes.json statt aus dieser Liste.
const store = {
    notes: ['Buy milk', 'Call Ada', 'Water the plants'],
    add(text) {
        this.notes.push(text);
        return this.notes.length;
    },
};

export default store;
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Node.js-Grundlagen

Übe selbstständig: Express-Playground