Manuseio de arquivos no nó.JS usando fluxos | Explicado com exemplos

Manuseio de arquivos no nó.JS usando fluxos | Explicado com exemplos
A construção de aplicativos da vida real geralmente exige que o programa possa interagir com arquivos e sistemas de arquivos e a criação de um aplicativo no ambiente NodeJS não é exceção. Para esta interação de dados com arquivos através do NodeJS, há o uso do conceito de fluxos. Os fluxos no NodeJS não são um conceito somente de nó, ele foi implementado pela primeira vez em um sistema operacional baseado em UNIX.

Os fluxos são uma maneira de ler um arquivo bit-bit e passar pequenos pedaços de dados para o servidor, em vez de ler um arquivo como um todo e depois passar informações para o servidor como um arquivo de big data. Isso pode não parecer um grande negócio, mas na realidade, isso economiza muito tempo no servidor.

Fluxos em nodejs

Os fluxos funcionam como uma fila com a ajuda de um buffer, um buffer é um pequeno espaço temporário usado para armazenar um pedaço de dados que deve ser transferido. O buffer funciona como uma fila, se você deseja transferir uma grande quantidade de dados de um ponto para outro, o buffer carrega um pedaço de dados e o passa para o servidor e aguarda o servidor responder para que possa descartar aquele pedaço de dados de sua fila. Enquanto aguarda a resposta do servidor, ele carrega mais pedaços de dados com base no tamanho do buffer definido pelo programador ou pelo aplicativo.

Todo esse processo de obter um pedaço do arquivo, carregando -o no buffer e depois analisando esse pedaço para o aplicativo \ servidor é conhecido como um Fluxo. No NodeJS, existem três tipos diferentes de fluxos

  • O fluxo somente leitura chamado The Legable Stream
  • O fluxo somente de gravação chamado Stream Wititable
  • O fluxo de leitura e gravação é chamado de fluxo duplex

Lendo dados de um arquivo através de fluxos no NodeJS

Para começar com o tutorial, você precisa usar o comando no terminal:

npm init -y

Isso criará um novo projeto de nó para nós junto com o pacote.arquivo json em nosso diretório

Para ler alguns dados de um arquivo usando nodejs, você precisará de um arquivo com algum texto. Portanto, crie um novo arquivo de texto e coloque alguns “Lorem ipsum” texto usando o gerador Lorem ipsum.

Copie este texto e coloque -o no arquivo de texto e salve o arquivo de texto:

Como você pode ver, o nome do arquivo de texto é "meus dados.TXT". Crie um novo arquivo JavaScript no mesmo diretório e nomeie -o “StreamDemo.js "

Para criar um fluxo de leitura ou gravação, precisamos usar o "FS" módulo que vem como um módulo embutido do ambiente do nó. Para incluir o fs Módulo em seu programa Use as seguintes linhas de código:

var fs = requer ("fs");

Em seguida, precisamos criar um fluxo de leitura a partir do nosso arquivo de texto (que é colocado no mesmo diretório que o StreamDemo.arquivo js) usando a seguinte linha:

var myReadstream = fs.CreaterAreadstream (__ Dirname + '/mydata.TXT');

Agora, podemos usar esta variável “MyReadstream” para executar uma tarefa toda vez que recebe um novo pedaço de dados. Use a seguir as linhas de código para imprimir o pedaço no console toda vez que nosso fluxo recebe um novo pedaço:

MyReadstream.on ("dados", função (chunk)
console.log ("New Chunk foi aceito pelo programa");
console.log (pedaço);
);

Para executar este programa, no tipo de terminal, o seguinte comando:

Node StreamDemo

Você verá a seguinte saída em seu console:

Como você pode ver, conseguimos receber e imprimir os dados de nosso arquivo, no entanto, os dados que estamos recebendo no console não são os mesmos que temos em nosso arquivo. Isso ocorre porque precisamos definir um procedimento de codificação no fluxo de leitura. Alter, a linha do fluxo de leitura para corresponder à seguinte linha de código:

var myReadstream = fs.CreaterAreadstream (__ Dirname + '/mydata.txt ', "utf8");

Como você pode ver, adicionamos o "UTF8" codificando para o nosso fluxo. Agora, se executarmos novamente usando o “Node StreamDemo” Comando, obtemos o seguinte resultado em nosso terminal:

E aí está, estamos lendo os dados corretos do arquivo e imprimindo -os no console

Escrevendo dados em um arquivo através de fluxos no NodeJS

Podemos escrever em um arquivo usando o fluxo de gravação no NodeJS, que também vem com o módulo "FS". Escreveremos os dados que recebemos na seção anterior e escreveremos um novo arquivo que vamos escrever.TXT

Para escrever dados em um arquivo, vamos criar um novo Escreva fluxo Usando a seguinte linha de código:

var myWriteStream = fs.CreateWritEstream (__ Dirname + '/writeinme.txt ', "utf8");

Como você pode notar, já incluímos o "UTF8" codificação no fluxo de gravação. Para escrever o pedaço que recebemos do "meus dados" arquivo de texto para o novo arquivo, usaremos o seguinte código:

MyReadstream.on ("dados", função (chunk)
console.log ("New Chunk foi aceito pelo programa");
MyWriteStream.Escreva (pedaço);
console.log ("Chunk escrito para o novo arquivo de texto");
);

Execute o programa usando o comando:

Node StreamDemo

Você obterá a seguinte saída:

Como você pode ver no explorador do seu editor de código, um novo texto de arquivo foi criado automaticamente e se clique duas vezes no “writeinme ” Arquivo de texto Você verá os seguintes dados dentro desse arquivo:

Então, pela imagem acima, fica claro que conseguimos escrever dados em um arquivo usando fluxos

Conclusão

Os fluxos são usados ​​para carregar dados para \ de um arquivo por \ no aplicativo bit-bit ou em pequenos pedaços. Podemos ler e escrever dados usando fluxos que estão incluídos no FS (sistema de arquivos) módulo. O módulo Sistema de Arquivos (FS) é um módulo embutido com NodeJS. Existem três tipos diferentes de fluxos, a saber: fluxo legível, fluxo gravável e o fluxo duplex. Nesta postagem, implementamos um programa de nó simples que nos permitiu ler dados de um arquivo e escrever isso para um arquivo diferente com a ajuda de fluxos de dados e buffers.