Ler o arquivo linha por linha em JavaScript

Ashok Chapagai 12 outubro 2023
  1. Use JavaScript simples para ler um arquivo local linha por linha em JavaScript
  2. Use o módulo Node.js readline para ler um arquivo local em JavaScript
  3. Use o módulo line-reader em Node.js para ler um arquivo local em JavaScript
Ler o arquivo linha por linha em JavaScript

Este artigo apresentará maneiras de ler o arquivo usando JavaScript usando Vanilla JS e a estrutura JavaScript Node.js.

Use JavaScript simples para ler um arquivo local linha por linha em JavaScript

Podemos criar uma função JavaScript simples para ler o arquivo local colocado como a entrada HTML.

Podemos usar a tag HTML input para enviar o arquivo e a função FileReader() para ler o conteúdo do arquivo linha por linha com o uso da função

Exemplo 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);
};

Aqui, o campo de entrada é selecionado pelo método getElementById, que acionará a função sempre que for alterada (sempre que um arquivo for selecionado). Criamos uma nova instância do objeto FileReader(). Quando a instância reader.onload é acionada, uma função com o parâmetro progressEvent é chamada e podemos imprimir todo o conteúdo do arquivo no console como console.log(this.result).

Podemos estender a função para ler o conteúdo do arquivo linha por linha, conforme mostrado abaixo.

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);
};

O trecho estendido do método anterior usa split() para dividir o conteúdo lido pela variável de resultado e armazená-lo em uma variável de array fileContentArray. Em seguida, o loop for é usado para percorrer cada linha da variável fileContentArray e imprimir o conteúdo do arquivo linha por linha.

Para fins de teste, criamos um arquivo demo.txt que contém o seguinte conteúdo.

Line 1
Line 2
Line 3

Line 5

Agora, podemos ver que o arquivo tem cinco linhas e, ao fazer o upload do arquivo do elemento HTML Input, podemos ver o conteúdo do arquivo como na saída abaixo.

Produção:

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

Podemos ignorar o conteúdo 1 --> como era para visualizar o número da linha do arquivo.

Use o módulo Node.js readline para ler um arquivo local em JavaScript

Devemos ter certeza de que temos o Node instalado para usar este método. Podemos verificar isso digitando node -v no terminal ou prompt de comando. Agora podemos usar o módulo readline para ler o conteúdo do arquivo facilmente. Criamos um arquivo, app.js, e na primeira linha do arquivo app.js, importamos o módulo como mostrado abaixo.

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

Como o módulo readline é integrado ao Node.js, não o instalamos explicitamente. Podemos usar o módulo fs para criar um fluxo legível. É porque o módulo readline só é compatível com Streams legíveis.

Código de exemplo:

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 salvar o arquivo app.js na mesma pasta do arquivo demo.txt e executar com o comando node app.js.

Produção:

Line 1
Line 2
Line 3

Line 5

Use o módulo line-reader em Node.js para ler um arquivo local em JavaScript

Podemos usar o módulo Node.js line-reader para ler o arquivo em JavaScript. O módulo é open source, e precisamos instalá-lo com os comandos npm install line-reader --save ou yarn add line-reader.

Ler o conteúdo de um arquivo usando o módulo line-reader é fácil, pois fornece o método eachLine(). Ele nos permite ler o arquivo linha por linha. Podemos importá-lo no topo de nosso arquivo app.js como const lineReader = require('line-reader').

O método eachLine() recebe uma função de retorno de chamada com dois argumentos. Os argumentos são line e last. A opção line armazena o conteúdo, e a opção last informa se a linha lida é a última linha do arquivo. A segunda opção representa um valor booleano.

Código de exemplo:

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

Podemos salvar o arquivo app.js na pasta onde o arquivo demo.txt está localizado, ou podemos definir o caminho para o arquivo explicitamente, que lerá o conteúdo do arquivo linha por linha imprime a saída para o console.

Produção:

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

Artigo relacionado - JavaScript File