Arbeiten mit dem Dateisystem in Node.js: Vollständige Anleitung
In der modernen Webentwicklung ist die Fähigkeit, effizient mit dem Dateisystem zu arbeiten, eine der Schlüsselkompetenzen eines Backend-Entwicklers. Node.js bietet ein leistungsstarkes und flexibles Modul fs (File System), mit dem alle grundlegenden Operationen mit Dateien und Verzeichnissen ausgeführt werden können: Lesen, Schreiben, Löschen, Umbenennen und vieles mehr. In diesem Artikel werden wir detailliert besprechen, wie man mit dem Dateisystem in Node.js arbeitet, synchrone und asynchrone Methoden betrachten und die Arbeit mit Pfaden untersuchen.
Einbinden des fs-Moduls und grundlegende Prinzipien
Um mit dem Dateisystem in Node.js zu arbeiten, muss das integrierte Modul fs eingebunden werden. Dies geschieht mit einer einzigen Codezeile:
const fs = require('fs');Das Modul fs bietet sowohl synchrone als auch asynchrone Methoden. Asynchrone Methoden akzeptieren in der Regel eine Callback-Funktion als letztes Argument und sind für Production-Code vorzuziehen, da sie den Event Loop nicht blockieren. Synchrone Methoden enden auf Sync und können bei der Initialisierung der Anwendung oder in Skripten nützlich sein.
Darüber hinaus ist seit Node.js 10 die Arbeit mit fs/promises verfügbar – eine Version der Methoden, die Promises zurückgibt:
const fs = require('fs/promises');In diesem Artikel werden wir hauptsächlich den asynchronen Ansatz mit Promises verwenden, da er am modernsten und bequemsten ist.
Lesen von Dateien in Node.js
Das Lesen von Dateien ist eine der häufigsten Operationen. Betrachten wir drei Hauptmethoden.
Komplettes Lesen einer Datei (asynchron)
Die Methode fs.readFile() liest den gesamten Inhalt einer Datei in den Speicher. Dies ist für kleine Dateien praktisch.
const fs = require('fs/promises');
async function readFileExample() { try { const data = await fs.readFile('example.txt', 'utf8'); console.log('Dateiinhalt:', data); } catch (err) { console.error('Fehler beim Lesen der Datei:', err); }}
readFileExample();Zeilenweises Lesen einer Datei (Streaming)
Für große Dateien ist es besser, Streams zu verwenden oder die Datei zeilenweise mit readline zu lesen:
const fs = require('fs');const readline = require('readline');
async function readFileLineByLine() { const fileStream = fs.createReadStream('large-file.txt'); const rl = readline.createInterface({ input: fileStream, crlfDelay: Infinity });
for await (const line of rl) { console.log('Zeile:', line); }}
readFileLineByLine();Synchrone Lesevorgang
Wenn Sie eine Datei sofort lesen müssen und bereit sind, die Ausführung zu blockieren:
const fs = require('fs');
try { const data = fs.readFileSync('example.txt', 'utf8'); console.log(data);} catch (err) { console.error(err);}Schreiben und Aktualisieren von Dateien
Node.js bietet mehrere Methoden zum Schreiben von Daten in Dateien.
In eine Datei schreiben (Überschreiben)
Die Methode fs.writeFile() erstellt eine neue Datei oder überschreibt eine vorhandene:
const fs = require('fs/promises');
async function writeFileExample() { try { await fs.writeFile('output.txt', 'Hallo, Welt!', 'utf8'); console.log('Datei erfolgreich geschrieben'); } catch (err) { console.error('Schreibfehler:', err); }}
writeFileExample();Daten an das Ende einer Datei anhängen
Wenn Sie Daten hinzufügen möchten, ohne vorhandene zu löschen, verwenden Sie fs.appendFile():
const fs = require('fs/promises');
async function appendToFile() { try { await fs.appendFile('log.txt', `Neuer Eintrag: ${new Date()}`); console.log('Daten hinzugefügt'); } catch (err) { console.error('Fehler:', err);