Leer archivo línea por línea en JavaScript
- Utilice JavaScript simple para leer un archivo local línea por línea en JavaScript
-
Utilice el módulo
readline
de Node.js para leer un archivo local en JavaScript -
Utilice el módulo
line-reader
en Node.js para leer un archivo local en JavaScript
Este artículo presentará formas de leer el archivo usando JavaScript usando Vanilla JS y el marco de JavaScript Node.js.
Utilice JavaScript simple para leer un archivo local línea por línea en JavaScript
Podemos crear una función JavaScript simple para leer el archivo local introducido como entrada HTML.
Podemos usar la etiqueta HTML input
para cargar el archivo, y la función FileReader()
para leer el contenido del archivo línea por línea con el uso de la función
Ejemplo de código:
<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);
};
Aquí, el campo de entrada se selecciona mediante el método getElementById
, que activará la función siempre que se cambie (siempre que se seleccione un archivo). Creamos una nueva instancia del objeto FileReader()
. Cuando se activa la instancia reader.onload
, se llama a una función con el parámetro progressEvent
, y podemos imprimir todo el contenido del archivo en la consola como console.log(this.result)
.
Podemos extender la función para leer el contenido del archivo línea por línea, como se muestra a continuación.
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);
};
El fragmento extendido del método anterior usa split()
para dividir el contenido leído por la variable de resultado y almacenarlo en una variable de array fileContentArray
. Luego, el bucle for
se utiliza para recorrer cada línea de la variable fileContentArray
e imprimir el contenido del archivo línea por línea.
Con fines de prueba, creamos un archivo demo.txt
que contiene el siguiente contenido.
Line 1
Line 2
Line 3
Line 5
Ahora, podemos ver que el archivo tiene cinco líneas, y al cargar el archivo desde el elemento de entrada HTML, podemos ver el contenido del archivo como en la salida a continuación.
Producción :
1 --> Line 1
2 --> Line 2
3 --> Line 3
4 -->
5 --> Line 5
Podemos ignorar el contenido 1 -->
ya que era para visualizar el número de línea del archivo.
Utilice el módulo readline
de Node.js para leer un archivo local en JavaScript
Debemos asegurarnos de tener Node instalado para usar este método. Podemos comprobarlo escribiendo nodo -v
en la terminal o en el símbolo del sistema. Ahora podemos usar el módulo readline
para leer el contenido del archivo fácilmente. Creamos un archivo, app.js
, y en la primera línea del archivo app.js
, importamos el módulo como se muestra a continuación.
const readline = require('readline');
const fs = require('fs');
Dado que el módulo readline
está integrado en Node.js, no lo instalamos explícitamente. Podemos usar el módulo fs
para crear un flujo legible. Es porque el módulo readline
solo es compatible con Readable Streams.
Código de ejemplo:
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);
});
Podemos guardar el archivo app.js
en la misma carpeta que el archivo demo.txt
y ejecutarlo con el comando node app.js
.
Producción :
Line 1
Line 2
Line 3
Line 5
Utilice el módulo line-reader
en Node.js para leer un archivo local en JavaScript
Podemos utilizar el módulo line-reader
de Node.js para leer el archivo en JavaScript. El módulo es de código abierto y necesitamos instalarlo con los comandos npm install line-reader --save
o yarn add line-reader
.
Leer el contenido de un archivo usando el módulo line-reader
es fácil ya que proporciona el método eachLine()
. Nos permite leer el archivo línea por línea. Podemos importarlo en la parte superior de nuestro archivo app.js
como, const lineReader = require('line-reader')
.
El método eachLine()
toma una función de devolución de llamada con dos argumentos. Los argumentos son line
y last
. La opción línea
almacena el contenido, y la opción last
indica si la línea leída es la última línea del archivo. La segunda opción representa un valor booleano.
Código de ejemplo:
const lineReader = require('line-reader');
lineReader.eachLine('./demo.txt', (line, last) => {
console.log(line);
})
Podemos guardar el archivo app.js
en la carpeta donde se encuentra el archivo demo.txt
, o podemos establecer la ruta al archivo explícitamente, que leerá el contenido del archivo línea por línea imprime la salida en la consola.
Producción :
Line 1
Line 2
Line 3
Line 5