Node.js - Dateisystem
Willkommen, zukünftige Programmierer! Heute tauchen wir in die aufregende Welt von Node.js und sein Dateisystemmodul ein. Als dein freundlicher Nachbarschafts-Computerlehrer bin ich hier, um dich auf dieser Reise mit vielen Beispielen und Erklärungen zu führen. Also, schnall dich an und los geht's!
Synchron vs. asynchron
Bevor wir uns den Feinheiten der Dateioperationen zuwenden, lassen wir uns über zwei wichtige Konzepte unterhalten: synchrone und asynchrone Operationen.
Stell dir vor, du bist in einem Café. In einer synchrone Welt würdest du deinen Kaffee bestellen, auf dessen Zubereitung warten und dann zur nächsten Aufgabe übergehen. In einer asynchronen Welt würdest du deinen Kaffee bestellen und dann deinen Geschäften nachgehen, während der Barista ihn zubereitet.
In Node.js haben wir sowohl synchrone als auch asynchrone Methoden für Dateioperationen. Sehen wir uns ein Beispiel an:
const fs = require('fs');
// Synchron lesen
const data = fs.readFileSync('hello.txt', 'utf8');
console.log(data);
// Asynchron lesen
fs.readFile('hello.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
In der synchrone Version wartet unser Programm, bis die Datei gelesen wird, bevor es weitermacht. In der asynchronen Version führt es weiter aus, während die Datei gelesen wird, und führt dann eine Callback-Funktion aus, wenn es fertig ist.
Eine Datei schreiben
Nun lass uns lernen, wie man in eine Datei schreibt. Es ist, als würde man eine Nachricht für die Zukunft hinterlassen!
const fs = require('fs');
// Synchron schreiben
fs.writeFileSync('note.txt', 'Hallo, zukünftiges Ich!');
// Asynchron schreiben
fs.writeFile('note.txt', 'Hallo, zukünftiges Ich!', (err) => {
if (err) throw err;
console.log('Datei gespeichert!');
});
In beiden Fällen erstellen wir (oder überschreiben) eine Datei namens 'note.txt' mit dem Inhalt "Hallo, zukünftiges Ich!". Die asynchrone Version enthält eine Callback-Funktion, die nach dem Schreiben der Datei ausgeführt wird.
Eine Datei lesen
Das Lesen einer Datei ist, als würde man die Nachricht öffnen, die man sich selbst hinterlassen hat. Sehen wir uns an, wie man es macht:
const fs = require('fs');
// Synchron lesen
const data = fs.readFileSync('note.txt', 'utf8');
console.log(data);
// Asynchron lesen
fs.readFile('note.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
Beide Methoden geben den Inhalt von 'note.txt' aus. Der Parameter 'utf8' gibt die Kodierung der Datei an.
Eine Datei öffnen
Manchmal möchten wir mehr Kontrolle darüber haben, wie wir mit einer Datei interagieren. Daar ist die open
-Methode ins Spiel kommt:
const fs = require('fs');
// Asynchron öffnen
fs.open('myfile.txt', 'r', (err, fd) => {
if (err) throw err;
console.log('Datei erfolgreich geöffnet!');
// Vergiss nicht, die Datei zu schließen, wenn du fertig bist
fs.close(fd, (err) => {
if (err) throw err;
});
});
Dies öffnet 'myfile.txt' im Lesemodus ('r'). Der fd
in der Callback-Funktion ist ein Dateideskriptor, den wir für weitere Operationen an der Datei verwenden werden.
Promises API
Für diejenigen, die lieber mit Promises arbeiten (keine Sorge, wenn du nicht weißt, was das ist!), bietet Node.js eine auf Promises basierende API für Dateioperationen:
const fs = require('fs').promises;
async function readMyFile() {
try {
const data = await fs.readFile('myfile.txt', 'utf8');
console.log(data);
} catch (error) {
console.error('Fehler beim Lesen der Datei:', error);
}
}
readMyFile();
Dies erreicht das gleiche Ergebnis wie unser früherer asynchroner readFile
-Beispiel, aber mit moderner JavaScript-Syntax.
Dateiinformationen abrufen
Interessiert an den Informationen einer Datei? Node.js hat dich abgedeckt:
const fs = require('fs');
fs.stat('myfile.txt', (err, stats) => {
if (err) throw err;
console.log(`Dateigröße: ${stats.size} Bytes`);
console.log(`Ist es ein Verzeichnis? ${stats.isDirectory()}`);
console.log(`Ist es eine Datei? ${stats.isFile()}`);
});
Dies gibt uns Informationen wie die Dateigröße, ob es ein Verzeichnis oder eine Datei ist und mehr.
Eine Datei schließen
Vergiss nicht, deine Dateien zu schließen, wenn du fertig bist. Es ist wie das Zudrehen der Kappe deines Zahnpastatubens!
const fs = require('fs');
fs.open('myfile.txt', 'r', (err, fd) => {
if (err) throw err;
// Führe einige Operationen aus...
fs.close(fd, (err) => {
if (err) throw err;
console.log('Datei erfolgreich geschlossen');
});
});
Eine Datei kürzen
Manchmal möchte man eine Datei behalten, aber deren Inhalt entfernen. Daar ist die truncate
-Methode ins Spiel kommt:
const fs = require('fs');
fs.truncate('myfile.txt', 0, (err) => {
if (err) throw err;
console.log('Dateiinhalt gelöscht!');
});
Dies reduziert die Datei auf 0 Bytes, effektiv den Inhalt löscht.
Eine Datei löschen
Wenn du completely mit einer Datei fertig bist, kannst du sie löschen:
const fs = require('fs');
fs.unlink('myfile.txt', (err) => {
if (err) throw err;
console.log('Datei erfolgreich gelöscht');
});
Sei vorsichtig mit dieser! Es gibt keinen Rückgängig-Button im echten Leben!
Ein Verzeichnis erstellen
Brauchst du einen neuen Ordner? So machst du einen:
const fs = require('fs');
fs.mkdir('mynewfolder', (err) => {
if (err) throw err;
console.log('Verzeichnis erfolgreich erstellt!');
});
Ein Verzeichnis lesen
Möchtest du sehen, was in einem Verzeichnis ist? Hier ist wie:
const fs = require('fs');
fs.readdir('.', (err, files) => {
if (err) throw err;
console.log('Verzeichnisinhalt:');
files.forEach(file => {
console.log(file);
});
});
Dies列表 alle Dateien und Unterverzeichnisse im aktuellen Verzeichnis.
Ein Verzeichnis entfernen
Und schließlich, wenn du ein Verzeichnis entfernen möchtest:
const fs = require('fs');
fs.rmdir('mynewfolder', (err) => {
if (err) throw err;
console.log('Verzeichnis erfolgreich entfernt');
});
Beachte, dass dies nur für leere Verzeichnisse funktioniert.
Methodenreferenz
Hier ist eine praktische Tabelle der Methoden, die wir behandelt haben:
Methode | Beschreibung |
---|---|
readFile | Liest den gesamten Inhalt einer Datei |
writeFile | Schreibt Daten in eine Datei, ersetzt die Datei, wenn sie bereits existiert |
open | Öffnet eine Datei zum Lesen oder Schreiben |
close | Schließt einen Dateideskriptor |
stat | Holt Informationen über eine Datei |
truncate | Kürzt eine Datei auf eine bestimmte Länge |
unlink | Löscht eine Datei |
mkdir | Erstellt ein neues Verzeichnis |
readdir | Liest den Inhalt eines Verzeichnisses |
rmdir | Entfernt ein Verzeichnis |
Und das war's! Du bist jetzt mit den Grundlagen der Dateisystemoperationen in Node.js ausgestattet. Erinnere dich daran, Übung macht den Meister, also habe keine Angst, mit diesen Methoden zu experimentieren. Viel Spaß beim Programmieren!
Credits: Image by storyset