Einleitung: Warum sollte man in JavaScript mit Dateien arbeiten können?
\n\nWenn wir über JavaScript sprechen, denken die meisten sofort an den Browser und interaktive Oberflächen. Mit dem Aufkommen der Plattform Node.js hat JavaScript jedoch die Grenzen von Webseiten weit hinter sich gelassen. Heute ist es eine vollwertige Sprache für die Serverentwicklung, Automatisierung und Dienstprogramme. Und eine der wichtigsten Aufgaben, vor denen jeder Entwickler steht, ist die Arbeit mit dem Dateisystem.
\n\nDie Fähigkeit, Dateien zu lesen, zu schreiben, zu verschieben und zu löschen, ist eine Grundlage, ohne die kein ernsthaftes Projekt auskommt. Ob Logger, Konfigurationsdatei, Bild-Upload oder Datenanalyse – überall wird ein Zugriff auf das Dateisystem benötigt.
\n\nIn diesem Artikel werden wir praktische Beispiele für die Arbeit mit dem Dateisystem in Node.js durchgehen. Sie erfahren, wie Sie das integrierte Modul fs verwenden, welche Methoden es gibt und wie Sie typische Fehler vermeiden. Der gesamte Code kann sofort ausgeführt und getestet werden.
Grundlegende Methoden des Moduls fs
\n\nDas Modul fs (File System) ist Teil der Standardinstallation von Node.js. Es muss nicht separat installiert werden. Um zu beginnen, reicht es, es am Anfang der Datei einzubinden:
const fs = require('fs');\nconst fsPromises = require('fs').promises; // für die Arbeit mit Promises\n\nAlle Methoden des Moduls fs gibt es in drei Varianten:
- \n
- Synchron – blockieren die Codeausführung bis zum Abschluss der Operation. Haben normalerweise das Suffix
Sync. \n - Asynchron mit Callbacks – klassischer Node.js-Stil. \n
- Asynchron mit Promises – moderner Ansatz über
fs.promises. \n
In modernen Projekten wird die Verwendung von Promises und async/await empfohlen. Das macht den Code sauberer und verständlicher.
Dateien lesen
\n\nDas häufigste Szenario ist das Lesen des Inhalts einer Datei. Betrachten wir ein Beispiel mit der Textdatei data.txt:
const fs = require('fs').promises;\n\nasync function readFileExample() {\n try {\n const data = await fs.readFile('data.txt', 'utf8');\n console.log('Dateiinhalt:');\n console.log(data);\n } catch (err) {\n console.error('Fehler beim Lesen der Datei:', err.message);\n }\n}\n\nreadFileExample();\n\nDer zweite Parameter 'utf8' gibt die Kodierung an. Wenn Sie ihn weglassen, erhalten Sie einen rohen Buffer. Geben Sie für Textdateien immer die Kodierung an.
In Dateien schreiben
\n\nDas Schreiben von Daten in eine Datei kann auf zwei Arten erfolgen: vollständiges Überschreiben oder Anhängen an das Ende.
\n\nDatei überschreiben:
\nconst fs = require('fs').promises;\n\nasync function writeFileExample() {\n try {\n await fs.writeFile('output.txt', 'Hallo, Dateisystem!');\n console.log('Datei erfolgreich geschrieben');\n } catch (err) {\n console.error('Fehler beim Schreiben:', err.message);\n }\n}\n\nwriteFileExample();\n\nAn das Ende der Datei anhängen:
\nconst fs = require('fs').promises;\n\nasync function appendFileExample() {\n try {\n await fs.appendFile('log.txt', `Neuer Eintrag: ${new Date().toISOString()}\\n`);\n console.log('Daten hinzugefügt');\n } catch (err) {\n console.error('Fehler beim Hinzufügen:', err.message);\n }\n}\n\nappendFileExample();\n\nDie Methode appendFile eignet sich ideal für die Protokollierung oder das Sammeln von Daten.
Verwaltung von Verzeichnissen und Dateien
\n\nDie Arbeit mit dem Dateisystem beschränkt sich nicht auf Lesen und Schreiben. Oft müssen Ordner erstellt, die Existenz von Dateien überprüft oder diese gelöscht werden.
\n\nVerzeichnisse erstellen und löschen
\n\nconst fs = require('fs').promises;\n\nasync function manageDirectories() {\n try {\n // Verzeichnis erstellen (falls es nicht existiert)\n await fs.mk