Arbeiten mit dem Dateisystem in JavaScript (Node.js): Vollständiger Leitfaden für Anfänger
Das Arbeiten mit dem Dateisystem ist eine der Kernaufgaben bei der Erstellung von Serveranwendungen, Automatisierungsskripten oder Dienstprogrammen zur Datenverarbeitung. In JavaScript (Node.js) gibt es dafür das integrierte Modul fs (File System). Dieser Artikel führt Sie in die Grundlagen der Arbeit mit Dateien und Ordnern in Node.js ein, zeigt Ihnen, wie Sie Dateien lesen, schreiben, erstellen und löschen, und erklärt den Unterschied zwischen synchronen und asynchronen Methoden.
Was ist das fs-Modul in Node.js?
Das Modul fs bietet eine API für die Interaktion mit dem Dateisystem des Betriebssystems. Es ermöglicht die Durchführung von Operationen wie:
- Lesen des Inhalts von Dateien
- Schreiben von Daten in Dateien
- Erstellen und Löschen von Verzeichnissen
- Umbenennen und Kopieren von Dateien
- Überprüfen der Existenz von Dateien
- Abrufen von Informationen über Dateien (Statistiken)
Um das Modul fs zu verwenden, müssen Sie es in Ihren Code einbinden:
const fs = require('fs');Alle Methoden des Moduls fs sind in drei Varianten verfügbar: synchron (mit dem Suffix Sync), asynchron mit Callbacks und asynchron auf Basis von Promises (mit fs.promises). In diesem Leitfaden konzentrieren wir uns auf den modernen Ansatz mit async/await.
Dateien in Node.js lesen
Der einfachste Weg, den Inhalt einer Datei zu lesen, ist die Verwendung der Methode readFile aus fs.promises. Betrachten wir ein Beispiel:
const fs = require('fs').promises;
async function readFileExample() { try { const data = await fs.readFile('example.txt', 'utf8'); console.log('Dateiinhalt:', data); } catch (error) { console.error('Fehler beim Lesen der Datei:', error.message); }}
readFileExample();In diesem Beispiel:
- Wir importieren
fs.promises– die Version des Moduls, die Promises zurückgibt. - Die Funktion
readFileakzeptiert den Pfad zur Datei und die Kodierung (in diesem Fall'utf8'). - Wenn die Datei nicht existiert, wird ein Fehler ausgelöst, den wir im
catch-Block behandeln.
Wenn Sie eine Datei synchron lesen müssen (in einfachen Skripten), verwenden Sie readFileSync:
const fs = require('fs');
try { const data = fs.readFileSync('example.txt', 'utf8'); console.log(data);} catch (error) { console.error(error.message);}Wichtig: Synchrone Methoden blockieren die Codeausführung, bis der Vorgang abgeschlossen ist. Verwenden Sie in Serveranwendungen (z. B. mit Express) immer asynchrone Methoden, um die Verarbeitung anderer Anfragen nicht zu blockieren.
Daten in Dateien schreiben
Zum Schreiben von Daten in eine Datei wird die Methode writeFile verwendet. Wenn die Datei existiert, wird ihr Inhalt überschrieben. Wenn die Datei nicht existiert, wird sie automatisch erstellt.
const fs = require('fs').promises;
async function writeFileExample() { try { const content = 'Hallo, Welt! Dies ist ein Testeintrag.'; await fs.writeFile('output.txt', content, 'utf8'); console.log('Datei erfolgreich geschrieben!'); } catch (error) { console.error('Schreibfehler:', error.message); }}
writeFileExample();Wenn Sie Daten an das Ende einer vorhandenen Datei anhängen möchten (ohne sie zu überschreiben), verwenden Sie das Flag appendFile:
const fs = require('fs').promises;
async function appendToFile() { try { await fs.appendFile('log.txt', `Neuer Eintrag: ${new Date()}`, 'utf8'); console.log('Daten wurden an das Ende der Datei angehängt'); } catch (error) { console.error('Fehler:', error.message);\