Leer archivo línea por línea en JavaScript

Ashok Chapagai 12 octubre 2023
  1. Utilice JavaScript simple para leer un archivo local línea por línea en JavaScript
  2. Utilice el módulo readline de Node.js para leer un archivo local en JavaScript
  3. Utilice el módulo line-reader en Node.js para leer un archivo local en JavaScript
Leer archivo línea por línea 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
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

Artículo relacionado - JavaScript File