|
| 1 | +--- |
| 2 | +Kapitel: 24 |
| 3 | +Seite: 242 |
| 4 | +Beschreibung: |
| 5 | +--- |
| 6 | + |
| 7 | +# Kapitel 24 |
| 8 | +# Dateisystem |
| 9 | +Dateisystemoperationen in JavaScript dienen der Interaktion mit dem Dateisystem der Host-Umgebung, wie etwa ein Webbrowser (Client-seitiges JavaScript) oder ein Server (Node.js). JavaScript bietet verschiedene APIs und Methoden zum Lesen und Schreiben im Dateisystem. Diese Operationen sind wichtig für Aufgaben wie das Speichern von Daten, das Auslesen von Konfigurationsdateien und das Verarbeiten von Benutzer-Uploads. Unten folgt eine Übersicht über Dateisystemoperationen in JavaScript: |
| 10 | +#### Asynchrone und nicht blockierende I/O: |
| 11 | + |
| 12 | +In Node.js können I/O-Operationen asynchron durchgeführt werden, was bedeutet, dass sie die Programmausführung nicht blockieren. Stattdessen werden sie in eine Warteschlange gestellt, und das Programm führt andere Aufgaben weiter aus. Wenn die I/O-Operation abgeschlossen ist, wird eine Callback-Funktion aufgerufen, um das Ergebnis zu verarbeiten. Dies ist besonders nützlich für I/O-Operationen, die viel Zeit in Anspruch nehmen können. |
| 13 | + |
| 14 | +#### Lesen: |
| 15 | +In diesem Beispiel wird die Funktion `fs.readFile` verwendet, um Daten aus der Datei **test.txt** asynchron zu lesen. Sie nimmt eine Callback-Funktion entgegen, die ausgeführt wird, wenn der Lesevorgang abgeschlossen ist. Die Zeile `console.log("This gets printed at First")` wird unmittelbar nach dem Start des Lesevorgangs ausgeführt und wartet nicht auf den Abschluss des Lesevorgangs. |
| 16 | + |
| 17 | +```javascript |
| 18 | +const fs = require('fs'); |
| 19 | +// asynchrones, nicht blockierendes I/O – wird später ausgeführt, da es länger dauert |
| 20 | + |
| 21 | +fs.readFile('test.txt', 'utf8', (err, data) => { |
| 22 | + console.log(err, data) |
| 23 | +}) |
| 24 | +console.log("This gets printed at First") |
| 25 | +``` |
| 26 | + |
| 27 | +#### Schreiben: |
| 28 | +Hier wird `fs.writeFile` verwendet, um Daten asynchron in die Datei 'test.txt' zu schreiben. Die Callback-Funktion wird nach Abschluss des Schreibvorgangs ausgeführt. Sie gibt `"This runs after writing in a file: written to file"` aus, nachdem der Schreibvorgang abgeschlossen ist. |
| 29 | + |
| 30 | +```javascript |
| 31 | +fs.writeFile("test.txt", "mahima is good girl", () => { |
| 32 | + console.log("This runs after writing in a file: written to file") |
| 33 | +}) |
| 34 | +``` |
| 35 | + |
| 36 | +### Synchrone I/O: |
| 37 | + |
| 38 | +Synchrone I/O-Operationen unterbrechen die Programmausführung, bis die Operation abgeschlossen ist. In Node.js sollten synchrone Operationen sparsam verwendet werden, insbesondere bei Datei-I/O, da sie die Leistung beeinträchtigen und die Ereignisschleife blockieren können. |
| 39 | + |
| 40 | +#### Lesen: |
| 41 | +Die Funktion `fs.readFileSync` wird für das synchrone Lesen von Dateien verwendet. Sie blockiert die Ausführung, bis die gesamte Datei gelesen ist, und fährt dann mit dem Rest des Codes fort. Dies wird im Allgemeinen nicht empfohlen, da das Programm währenddessen nicht reagiert. |
| 42 | + |
| 43 | +```javascript |
| 44 | +const a = fs.readFileSync("test.txt") // Node.js blockiert absichtlich |
| 45 | +console.log(a.toString()) |
| 46 | +console.log("At last") |
| 47 | +``` |
| 48 | + |
| 49 | +#### Schreiben: |
| 50 | +`fs.writeFileSync` wird für das synchrone Schreiben von Dateien verwendet. Es blockiert die Ausführung des Programms, bis der Schreibvorgang abgeschlossen ist. Auch hier sollte diese Methode mit Vorsicht eingesetzt werden, da das Programm während des Schreibvorgangs für längere Zeit blockiert werden kann. |
| 51 | + |
| 52 | + |
| 53 | + |
| 54 | +```javascript |
| 55 | +fs.writeFileSync("test.txt", "mahima is good girl") |
| 56 | +console.log("This is sync: the process is intentionally blocked") |
| 57 | +``` |
| 58 | + |
| 59 | + |
| 60 | +Node.js bietet sowohl synchrone als auch asynchrone Datei-I/O-Optionen. Asynchrone I/O wird typischerweise bevorzugt für bessere Leistung und Reaktionsfähigkeit, während synchrone I/O nur bei Bedarf und mit Bedacht eingesetzt wird, da sie die Ausführung des Programms blockieren kann. |
| 61 | + |
0 commit comments