Lesen Sie die Datei in Node.js

Shraddha Paghdar 12 Oktober 2023
Lesen Sie die Datei in Node.js

In diesem kurzen Artikel lernen wir, wie man Dateien in Node.js liest.

Lesen Sie die Datei in Node.js

Das Modul fs bietet viele nützliche Funktionen für den Zugriff auf und die Interaktion mit dem Dateisystem. Eine Besonderheit des fs-Moduls ist, dass alle Methoden standardmäßig asynchron sind, aber durch Hinzufügen von sync auch synchron arbeiten können.

Wir werden fs.readFile() verwenden, um eine Datei in Node.js zu lesen. Sie müssen den Dateipfad, die Kodierung und eine Rückruffunktion übergeben, um die Dateidaten oder den Fehler aufzurufen.

Die Methode fs.readFile() ist eine eingebaute Methode zum Lesen der Datei. Es liest die gesamte Datei in den Puffer. Die Methode require() wird verwendet, um das Modul wie const fs = require('fs') zu laden.

Syntax:

fs.readFile(filename, encoding, callbackFn)

Diese Methode akzeptiert die drei Parameter.

  1. Dateiname – Dieser obligatorische Parameter enthält den Namen der Datei, die gelesen werden soll, oder den gesamten Pfad, wenn sie an einem anderen Ort gespeichert ist.
  2. encoding - Dieser Parameter ist ein obligatorischer Parameter, der die Codierung der Datei enthält. Sein Standardwert ist utf8.
  3. callbackFn - Diese Callback-Funktion wird aufgerufen, nachdem die Datei gelesen wurde. Es braucht zwei Parameter, err und data.
callbackFn-Parameter Beschreibung
err Wenn beim Lesen der Datei ein Fehler aufgetreten ist.
data Inhalt der gelesenen Datei.

Es gibt den Inhalt oder die in der Datei gespeicherten Daten zurück, oder beim Lesen der Datei ist ein Fehler aufgetreten. Lassen Sie es uns anhand eines Beispiels verstehen.

Code:

const fs = require('fs');
fs.readFile('/helloworld.txt', 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(data);
});

Ausgang:

Hello DelftStack readers!

Eine weitere Möglichkeit ist die Verwendung der synchronen Version fs.readFileSync().

Code:

const fs = require('fs');
try {
  const fileContent = fs.readFileSync('/helloworld.txt', 'utf8');
  console.log(fileContent);
} catch (err) {
  console.error(err);
}

Ausgang:

Hello DelftStack readers!

Wir können auch die Methode fsPromises.readFile() verwenden, die vom Modul fs/promises angeboten wird.

Code:

const fsPromises = require('fs/promises');

async function FileReadFn() {
  try {
    const fileContent =
        await fsPromises.readFile('/helloworld.txt', {encoding: 'utf8'});
    console.log(fileContent);
  } catch (err) {
    console.log(err);
  }
}
FileReadFn();

Ausgang:

Hello DelftStack readers!

Alle drei von fs.readFile(), fsPromises.readFile() und fs.readFileSync() lesen den gesamten Inhalt der Datei in den Speicher, bevor sie die Daten zurückgeben. Dies bedeutet, dass große Dateien die Speichernutzung und die Ausführungsgeschwindigkeit des Programms stark beeinträchtigen.

Anstatt darauf zu warten, dass die Datei vollständig gelesen wird, beginnen wir mit dem Streaming zum HTTP-Client, sobald wir ein Datenelement zum Senden bereit haben. Streams bieten im Wesentlichen zwei Hauptvorteile gegenüber der Verwendung anderer Datenverarbeitungsmethoden.

  1. Speichereffizienz - Sie müssen keine großen Datenmengen in den Speicher laden, bevor Sie sie verarbeiten.
  2. Zeiteffizienz - Es dauert viel weniger Zeit, um mit der Verarbeitung der Daten zu beginnen, da Sie sofort mit der Verarbeitung beginnen können, anstatt zu warten, bis die gesamte Nutzlast verfügbar ist.

Auf dem Dateistrom wird die Methode pipe() aufgerufen, und sie nimmt die Quelle und leitet sie an ein Ziel. Der Zielstream ist der Rückgabewert der pipe()-Methode, was eine sehr praktische Sache ist, die es uns ermöglicht, mehrere Aufrufe von pipe() miteinander zu verketten.

Code:

const fs = require('fs');
const http = require('http');

const nodeServer = http.createServer((req, res) => {
  const fileStream = fs.createReadStream(`${__dirname}/helloworld.txt`);
  fileStream.pipe(res);
});
nodeServer.listen(3000);

Ausgang:

Hello DelftStack readers!
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn