Datei Zeile für Zeile in JavaScript lesen

Ashok Chapagai 12 Oktober 2023
  1. Verwenden Sie einfaches JavaScript, um eine lokale Datei Zeile für Zeile in JavaScript zu lesen
  2. Node.js-Modul readline zum Lesen einer lokalen Datei in JavaScript verwenden
  3. Verwenden das Modul line-reader in Node.js, um eine lokale Datei in JavaScript zu lesen
Datei Zeile für Zeile in JavaScript lesen

In diesem Artikel werden Möglichkeiten zum Durchlesen der Datei mit JavaScript unter Verwendung von Vanilla JS und dem JavaScript-Framework Node.js vorgestellt.

Verwenden Sie einfaches JavaScript, um eine lokale Datei Zeile für Zeile in JavaScript zu lesen

Wir können eine einfache JavaScript-Funktion erstellen, um die als HTML-Eingabe eingegebene lokale Datei zu lesen.

Wir können das HTML-Tag input verwenden, um die Datei hochzuladen, und die Funktion FileReader(), um den Inhalt der Datei Zeile für Zeile mit der Funktion zu lesen

Code-Beispiel:

<input type="file" name="file" id="file" />
document.getElementById('file').onchange = function() {
  var file = this.files[0];
  var reader = new FileReader();
  reader.onload = function(progressEvent) {
    console.log(this.result);
  };
  reader.readAsText(file);
};

Hier wird das Eingabefeld durch die Methode getElementById ausgewählt, die die Funktion bei jeder Änderung (bei Auswahl einer Datei) auslöst. Wir erstellen eine neue Instanz des Objekts FileReader(). Wenn die Instanz reader.onload ausgelöst wird, wird eine Funktion mit dem Parameter progressEvent aufgerufen, und wir können den gesamten Inhalt der Datei auf der Konsole als console.log(this.result) ausgeben.

Wir können die Funktion erweitern, um den Inhalt der Datei Zeile für Zeile zu lesen, wie unten gezeigt.

document.getElementById('file').onchange = function() {
  var file = this.files[0];
  var reader = new FileReader();
  reader.onload = function(progressEvent) {
    var fileContentArray = this.result.split(/\r\n|\n/);
    for (var line = 0; line < lines.length - 1; line++) {
      console.log(line + ' --> ' + lines[line]);
    }
  };
  reader.readAsText(file);
};

Das erweiterte Snippet der vorherigen Methode verwendet split(), um den von der Ergebnisvariablen gelesenen Inhalt aufzuteilen und in einer Array-Variablen fileContentArray zu speichern. Dann wird mit der for-Schleife jede Zeile der Variablen fileContentArray durchlaufen und der Dateiinhalt zeilenweise ausgegeben.

Zu Testzwecken erstellen wir eine Datei demo.txt, die folgenden Inhalt enthält.

Line 1
Line 2
Line 3

Line 5

Jetzt können wir sehen, dass die Datei fünf Zeilen hat, und beim Hochladen der Datei aus dem HTML-Input-Element können wir den Inhalt der Datei wie in der Ausgabe unten sehen.

Ausgabe:

1 --> Line 1
2 --> Line 2
3 --> Line 3
4 --> 
5 --> Line 5

Wir können den Inhalt 1 --> ignorieren, da er die Zeilennummer der Datei visualisiert.

Node.js-Modul readline zum Lesen einer lokalen Datei in JavaScript verwenden

Wir sollten sicherstellen, dass Node installiert ist, um diese Methode zu verwenden. Wir können das überprüfen, indem wir im Terminal oder in der Eingabeaufforderung node -v eingeben. Wir können nun das Modul readline verwenden, um den Inhalt der Datei einfach zu lesen. Wir erstellen eine Datei app.js und importieren in der ersten Zeile der Datei app.js das Modul wie unten gezeigt.

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

Da das Modul readline in Node.js eingebaut ist, installieren wir es nicht explizit. Mit dem Modul fs können wir einen lesbaren Stream erstellen. Das liegt daran, dass das Modul readline nur mit Readable Streams kompatibel ist.

Beispielcode:

const readLine = require('readline');
const f = require('fs');
var file = './demo.txt';
var rl = readLine.createInterface(
    {input: f.createReadStream(file), output: process.stdout, terminal: false});
rl.on('line', function(text) {
  console.log(text);
});

Wir können die Datei app.js im gleichen Ordner wie die Datei demo.txt speichern und mit dem Befehl node app.js ausführen.

Ausgabe:

Line 1
Line 2
Line 3

Line 5

Verwenden das Modul line-reader in Node.js, um eine lokale Datei in JavaScript zu lesen

Wir können das Node.js-Modul line-reader verwenden, um die Datei in JavaScript zu lesen. Das Modul ist Open Source, und wir müssen es mit den Befehlen npm install line-reader --save oder yarn add line-reader installieren.

Das Lesen des Inhalts einer Datei mit dem Modul line-reader ist einfach, da es die Methode eachLine() bereitstellt. Damit können wir die Datei Zeile für Zeile lesen. Wir können es oben in unserer Datei app.js als const lineReader = require('line-reader') importieren.

Die Methode eachLine() nimmt eine Callback-Funktion mit zwei Argumenten an. Die Argumente sind line und last. Die Option line speichert den Inhalt und die Option last gibt an, ob die gelesene Zeile die letzte Zeile in der Datei ist. Die zweite Option repräsentiert einen booleschen Wert.

Beispielcode:

const lineReader = require('line-reader');
lineReader.eachLine('./demo.txt', (line, last) => {
  console.log(line);
})

Wir können die Datei app.js in dem Ordner speichern, in dem sich die Datei demo.txt befindet, oder wir können den Pfad zur Datei explizit festlegen, wodurch der Inhalt der Datei zeilenweise gelesen wird und die Ausgabe auf die Konsole.

Ausgabe:

Line 1
Line 2
Line 3

Line 5
Ashok Chapagai avatar Ashok Chapagai avatar

Ashok is an avid learner and senior software engineer with a keen interest in cyber security. He loves articulating his experience with words to wider audience.

LinkedIn GitHub

Verwandter Artikel - JavaScript File