Arbeiten mit dem Dateisystem in JavaScript (Node.js)
In der modernen Webentwicklung hat JavaScript längst den Browser verlassen. Dank der Plattform Node.js haben Entwickler die Möglichkeit, Serveranwendungen zu erstellen, mit Datenbanken zu arbeiten und natürlich mit dem Dateisystem zu interagieren. Die Fähigkeit, Dateien zu lesen, zu schreiben, zu löschen und zu verschieben, ist eine der Schlüsselqualifikationen eines jeden Backend-Entwicklers. In diesem Artikel werden wir im Detail besprechen, wie man mit dem Dateisystem in JavaScript auf Node.js arbeitet, unter Verwendung des integrierten Moduls fs und seiner modernen Promise-basierten Version fs/promises.
Das Material wird sowohl für Anfänger nützlich sein, die gerade erst mit Node.js beginnen, als auch für erfahrene Entwickler, die ihr Wissen systematisieren möchten. Alle Codebeispiele können in Ihrer Entwicklungsumgebung ausgeführt werden.
Einbinden des fs-Moduls und grundlegende Methoden
Für die Arbeit mit dem Dateisystem in Node.js wird das integrierte Modul fs (file system) verwendet. Es muss nicht separat installiert werden – es ist sofort nach der Installation von Node.js verfügbar. Es wird auf die Standardmethode eingebunden:
const fs = require('fs');Allerdings wird im modernen JavaScript (ES6+) und Node.js (ab Version 14) empfohlen, die ES-Module-Syntax zu verwenden und mit der Promise-basierten Version fs/promises zu arbeiten. Dies vermeidet die "Callback-Hölle" und ermöglicht es, saubereren, asynchronen Code mit async/await zu schreiben.
import * as fs from 'fs/promises';// oderconst fs = require('fs/promises');Die grundlegenden Methoden des Moduls fs werden in drei Kategorien unterteilt:
- Synchron – blockieren den Ausführungsfluss (z. B.
fs.readFileSync()). Werden selten verwendet, hauptsächlich in Initialisierungsskripten. - Asynchron mit Callbacks – traditioneller Node.js-Stil (z. B.
fs.readFile()). - Asynchron mit Promises – moderner Stil (
fs/promises). Für die meisten Aufgaben empfohlen.
Lesen von Dateien in Node.js
Beginnen wir mit der häufigsten Aktion – dem Lesen des Inhalts einer Datei. Wir betrachten zwei Ansätze: mit Callbacks und mit Promises.
Lesen mit Callbacks (traditionelle Methode)
const fs = require('fs');
fs.readFile('example.txt', 'utf8', (err, data) => { if (err) { console.error('Fehler beim Lesen der Datei:', err); return; } console.log('Dateiinhalt:', data);});Beachten Sie: Wir übergeben die Kodierung 'utf8' als zweites Argument. Wenn sie nicht angegeben wird, werden die Daten als binärer Puffer (Buffer) zurückgegeben.
Lesen mit Promises (empfohlene Methode)
import { readFile } from 'fs/promises';
async function readExample() { try { const data = await readFile('example.txt', 'utf8'); console.log('Dateiinhalt:', data); } catch (err) { console.error('Fehler beim Lesen der Datei:', err); }}
readExample();Der Code ist sauberer und verständlicher geworden. Fehler werden mit try/catch behandelt, was für Entwickler, die andere Sprachen kennen, vertraut ist.
Schreiben von Daten in eine Datei
Das Schreiben in eine Datei ist die zweitwichtigste Operation. In Node.js gibt es zwei Hauptmethoden: writeFile (überschreibt die Datei) und appendFile (fügt Daten am Ende der Datei hinzu).
Datei überschreiben
import { writeFile } from 'fs/promises';
async function writeExample() { try { await writeFile('output.txt', 'Hallo, Welt!', 'utf8'); console.log('Datei erfolgreich geschrieben'); } catch (err) { console.error('Fehler beim Schreiben:', err); }}
writeExample();Wenn die Datei output.txt nicht existiert, wird sie automatisch erstellt. Wenn sie existiert, wird ihr Inhalt vollständig überschrieben.