Atualizado: 02/01/2025

Fluxo Stream - Node.js

Stream representa um fluxo de dados. Existem vários tipos de fluxos, entre os quais podemos destacar fluxos de leitura e fluxos de escrita.

Nos primeiros capítulos, nós já encontramos fluxos:

const http = require("http");

http.createServer(function(request, response) {
    
}).listen(3000);

Os parâmetros request e response, que são passados para a função e através dos quais podemos obter dados sobre a solicitação e gerenciar a resposta, são justamente fluxos: request é um fluxo de leitura e response é um fluxo de escrita.

Usando fluxos de leitura e escrita, podemos ler e gravar informações em um arquivo. Por exemplo:

const fs = require("fs");

const writeableStream = fs.createWriteStream("hello.txt");
writeableStream.write("Hello, world!\n");    
writeableStream.write("Mais uma linha\n");
writeableStream.end("Última linha");

const readableStream = fs.createReadStream("hello.txt");

readableStream.on("data", function(chunk) { 
    console.log(chunk.toString());
});

Para criar um fluxo de escrita, utilizamos o método fs.createWriteStream(), no qual passamos o nome do arquivo. Se esse arquivo não existir na pasta, ele será criado.

A gravação de dados é feita através do método write(), no qual os dados são passados. Para finalizar a gravação, chamamos o método end().

Após isso, um arquivo hello.txt aparecerá na pasta do projeto, que pode ser aberto em qualquer editor de texto.

Para criar um fluxo de leitura, utilizamos o método fs.createReadStream(), no qual também passamos o nome do arquivo. Um parâmetro opcional é a codificação, que permite converter os dados lidos em uma string na codificação especificada.

O fluxo é dividido em uma série de pedaços, ou chunks. E ao ler cada pedaço, ocorre o evento data. Com o método on(), podemos nos inscrever nesse evento e exibir cada parte de dados no console:

readableStream.on("data", function(chunk) { 
  console.log(chunk.toString());
});

Vamos executar o arquivo:

c:\app> node app.js
Hello, world!
Mais uma linha
Última linha

A funcionalidade dos fluxos não se limita apenas ao trabalho com arquivos, existem também fluxos de rede, fluxos de criptografia, fluxos de arquivamento etc., mas os princípios gerais de funcionamento são os mesmos que os dos fluxos de arquivos.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com