Ler o arquivo linha por linha em JavaScript
- Use JavaScript simples para ler um arquivo local linha por linha em JavaScript
-
Use o módulo Node.js
readline
para ler um arquivo local em JavaScript -
Use o módulo
line-reader
em Node.js para ler um arquivo local 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