Einleitung: Warum Dateiverwaltung in JavaScript ein Muss ist
\n\nStellen Sie sich vor, Sie sind der Kapitän eines Raumschiffs. Ihre Aufgabe ist es, die Frachträume, Sauerstoffvorräte und das Bordbuch zu verwalten. In der Welt der Webentwicklung ist das Dateisystem Ihr Frachtraum, und JavaScript ist Ihre Kommandozentrale. Ohne Dateiverwaltungskenntnisse bleiben Sie im Orbit stecken: Sie können keine Benutzereinstellungen speichern, keine Serverkonfiguration laden oder Logdateien verarbeiten.
\n\nViele Anfänger denken, JavaScript lebt nur im Browser und kann keine Dateien auf der Festplatte anfassen. Das ist ein Mythos! Mit Node.js (und sogar in modernen Browsern über die File API) ist JavaScript zu einem vollwertigen Werkzeug für die Dateisystemverwaltung geworden. Heute sehen wir uns an, wie man Dateien liest, schreibt, löscht und verschiebt – und wie man die Fallstricke der Asynchronität vermeidet.
\n\nÜbrigens: Wenn Sie gerade erst mit dem Programmieren beginnen, empfehle ich Ihnen, zuerst die JavaScript-Grundlagen zu lernen – das hilft Ihnen, die folgenden Beispiele schneller zu verstehen.
\n\nWo arbeitet JavaScript mit Dateien? Zwei Welten – zwei Ansätze
\n\nBevor wir in den Code eintauchen, klären wir: Dateioperationen in JS teilen sich in zwei Lager auf.
\n\n1. Serverseitiges JavaScript (Node.js)
\nHier haben wir vollen Zugriff auf das Dateisystem: Erstellen, Löschen, Umbenennen, Stream-Lesen – alles, was das Herz begehrt. Gearbeitet wird mit dem integrierten Modul fs (File System). Es ist wie ein Schweizer Taschenmesser für die Dateiarbeit.
2. Clientseitiges JavaScript (Browser)
\nDer Browser ist eine „Sandbox“ mit Einschränkungen. Sie können nicht einfach eine beliebige Datei vom Computer des Benutzers lesen (sonst würden Hacker jubeln). Aber Sie können mit Dateien arbeiten, die der Benutzer selbst über <input type="file"> ausgewählt hat, oder über die APIs FileReader und Blob.
In diesem Artikel konzentrieren wir uns auf Node.js, aber am Ende gibt es einen Bonus – ein Beispiel für den Browser.
\n\nDas fs-Modul: Ihr wichtigstes Werkzeug
\n\nIn Node.js beginnt die Dateiarbeit mit dem Einbinden des fs-Moduls:
const fs = require('fs'); // alter Stil\n// oder\nimport fs from 'fs'; // wenn Sie ES-Module verwenden\n\nfs bietet drei Arbeitsmodi: synchron, asynchron mit Callbacks und asynchron mit Promises. Wir verwenden den letzten – mit async/await, da dies der moderne und lesbare Ansatz ist.
Datei lesen: Vom Einfachen zum Komplexen
\n\nAngenommen, wir haben eine Datei data.txt mit Text. Der einfachste Weg, sie zu lesen:
import { readFile } from 'fs/promises';\n\nasync function readMyFile() {\n try {\n const data = await readFile('data.txt', 'utf-8');\n console.log(data);\n } catch (err) {\n console.error('Lesefehler:', err.message);\n }\n}\n\nreadMyFile();\n\nWas ist hier wichtig? 'utf-8' – die Kodierung. Wenn Sie sie nicht angeben, erhalten Sie einen rohen Buffer, den Sie erst in einen String umwandeln müssen. Geben Sie bei Textdateien immer die Kodierung an.
Wenn die Datei groß ist (z. B. eine Logdatei mit 500 MB), ist es keine gute Idee, sie komplett zu lesen. Hier helfen Streams:
\n\nimport { createReadStream } from 'fs';\nimport { createInterface } from 'readline';\n\nasync function readLargeFile() {\n const stream = createReadStream('bigfile.log', 'utf-8');\n const rl = createInterface({ input: stream });\n\n for await (const line of rl) {\n console.log('Zeile:', line);\n // Verarbeite jede Zeile während des Lesens\n }\n}\n\nreadLargeFile();\n\nIn Datei schreiben: Erstellen und Anhängen
\n\nEs gibt zwei Arten des Schreibens: Überschreiben (write) und Anhängen (append). Der Unterschied ist klar: write löscht die alte Datei, append fügt am Ende hinzu.
import { writeFile, appendFile } from 'fs/promises';\n\n//