Datei Zeile für Zeile in JavaScript lesen
- Verwenden Sie einfaches JavaScript, um eine lokale Datei Zeile für Zeile in JavaScript zu lesen
-
Node.js-Modul
readline
zum Lesen einer lokalen Datei in JavaScript verwenden -
Verwenden das Modul
line-reader
in Node.js, um eine lokale Datei in JavaScript zu 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