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
response
request
response
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()
A gravação de dados é feita através do método write()
end()
Após isso, um arquivo hello.txt
Para criar um fluxo de leitura, utilizamos o método fs.createReadStream()
O fluxo é dividido em uma série de pedaços, ou chunks. E ao ler cada pedaço, ocorre o evento data
on()
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.