Como trabalhar com fluxos graváveis ​​em Node.js?

Como Trabalhar Com Fluxos Gravaveis Em Node Js



Os dados são transferidos pela rede entre locais de origem e destino na forma de fluxos. O lado do remetente é chamado de origem e o lado do receptor é representado como o fluxo de destino. Usando esses Streams, os dados em formato textual ou de áudio ou vídeo podem ser enviados e recebidos com chances mínimas de vazamento ou perda de dados.

Este guia explica como trabalhar com streams graváveis ​​em Node.js.

Como trabalhar com fluxos graváveis ​​em Node.js?

O ' gravável ”stream pode ser usado para inserir novos dados no arquivo ou pode colocar o conteúdo de outro stream aleatório. A conversão ou posicionamento de dados acontece principalmente com a ajuda do “ cano() ”Método. Este método torna o processo de conversão e atribuição de conteúdo mais conveniente, ao mesmo tempo que reduz as chances de colisão de dados.







Sintaxe



O fluxo gravável é criado invocando o método abaixo:



fs. criarWriteStream ( 'arquivoalvo.ext' ) ;

Na sintaxe acima, o “ creatWriteStream() ”é invocado pelo objeto do importado“ fs ” Módulo, e o arquivo no qual os dados serão gravados é passado como parâmetro.





Vamos dar uma olhada em alguns exemplos de streams graváveis ​​em Node.js.

Exemplo 1: Escrevendo o conteúdo de outro arquivo usando um fluxo gravável

No exemplo abaixo, o arquivo aleatório é enviado pelo Stream legível e, em seguida, o conteúdo do arquivo é colocado em outro arquivo disponível no Stream gravável:



era fsObj = exigir ( 'fs' ) ;

const fluxo de dados = fsObj. criarReadStream ( 'meunovoarquivo1.txt' ) ;

const escreverStream = fsObj. criarWriteStream ( 'meunovoarquivo2.txt' ) ;

fluxo de dados. cano ( escreverStream ) ;

Descrição do código acima:

  • Primeiro, o “ fs ”O módulo é importado e seu objeto é armazenado no novo“ fsObj ' variável.
  • A seguir, com a ajuda de “ fasObj ”invocar o“ criarReadStream() ”Método para criar um fluxo legível e passar o arquivo legível selecionado como seu parâmetro.
  • Em seguida, o fluxo gravável é criado invocando o “ criarWriteStream() ”Método para escrever o conteúdo no arquivo fornecido.
  • Armazene os resultados dos métodos invocados acima no “ fluxo de dados ' e ' escreverStream ”variáveis ​​respectivamente.
  • Finalmente, invoque o “. cano() ”método seguido por“ fluxo de dados ”E liderando com o“ escreverStream ”variáveis.

Agora, execute o arquivo que contém (controlFlow.js) executando o comando abaixo:

Exemplo 2: Gravando o conteúdo em arquivo usando o método “stream.write()”

Neste exemplo, o “ escrever() ”O método é usado para gravar dados no arquivo disponível no Stream gravável:

era fsObj = exigir ( 'fs' ) ;
const httpObj = exigir ( 'http' ) ;

const servirLocaly = httpObj. criarServidor ( ( solicitação, resposta ) => {
tentar {
const cellStream = fsObj. criarWriteStream ( 'meunovoarquivo2.txt' ) ;
cellStream. escrever ( 'Dados a serem colocados no arquivo de destino.' ) ;
cellStream. fim ( ) ;
resposta. fim ( 'Dados escritos por meio de fluxo gravável' )
}
pegar ( erro ) {
console. erro ( erro ) ;
}
} ) ;
servirLocaly. ouvir ( 8080 , ( ) => {
console. registro ( 'O servidor está rodando no número da porta localhost: '8080' ' )
) ;

A descrição do código acima é a seguinte:

  • Primeiro, importe o “ fs ' e ' http ”módulos e armazenam seus objetos em“ fsObj ' e ' httpObj ”variáveis ​​respectivamente.
  • Em seguida, o servidor foi criado invocando o “ criarServidor() ”E armazenando este servidor recém-criado em um“ servirLocaly ' variável.
  • Em seguida, use um “ tentar ”bloco dentro da função de retorno de chamada do método e invoca o“ criarWriteStream() ”Método usando o“ fsObj ' variável.
  • Passe o arquivo de destino no qual o conteúdo precisa ser inserido, entre parênteses deste método e armazene o resultado no “ cellStream ' variável
  • Utilize o “ escrever() ”Com esta variável e passe uma mensagem fictícia entre parênteses que será escrita no arquivo de destino.
  • Feche o Stream invocando o “ fim() ”E exibir uma mensagem de sucesso na página da web invocando o“ resposta.end() ”Método. Onde ' resposta ”É o parâmetro de retorno de chamada do“ criarServidor ”Método.
  • Utilize o “ pegar ”Bloco para lidar com quaisquer erros ocorridos.
  • Por fim, ouça ou configure o servidor pelo número da porta “ 8080 ”E exibir a mensagem de sucesso com a ajuda de sua função de retorno de chamada.

A saída gerada mostra que o texto fornecido foi escrito usando o “ escrever() ”método:

Exemplo 3: Gravando os mesmos dados em vários arquivos

Neste exemplo, um único arquivo será lido do stream usando o “ criarReadStream() ”Método. Em seguida, o conteúdo lido é gravado em vários arquivos usando o “ criarWriteStream() ' e ' .cano() ' métodos:

era fsObj = exigir ( 'fs' ) ;

const fluxo de dados = fsObj. criarReadStream ( 'meunovoarquivo1.txt' ) ;

const writeStream1 = fsObj. criarWriteStream ( 'meunovoarquivo2.txt' ) ;

const writeStream2 = fsObj. criarWriteStream ( 'usecase.txt' ) ;

fluxo de dados. cano ( writeStream1 ) ;

fluxo de dados. cano ( writeStream2 ) ;

No trecho de código acima:

  • O ' criarReadStream() ”é invocado e o arquivo cujo conteúdo precisa ser lido é passado como seu parâmetro. O resultado deste método é armazenado no “ fluxo de dados ' variável.
  • A seguir, o “ criarWriteStream() ”O método é chamado e o arquivo de destino é passado como seu parâmetro.
  • Da mesma forma, o caminho para o segundo arquivo também é passado como um fluxo gravável e os resultados são armazenados em “ writeStream1 ' e ' writeStream2 ”variáveis.
  • Depois disso, usando o “ .cano() ”Método o conteúdo armazenado no“ fluxo de dados ”A variável é atribuída ao“ writeStream1 ' e ' writeStream2 ”variáveis.

A saída gerada mostra que o conteúdo do arquivo fornecido foi inserido nos arquivos fornecidos nos fluxos:

Isso é tudo sobre o funcionamento de streams graváveis ​​em Node.js.

Conclusão

Para trabalhar com fluxos graváveis, o método de “ criarWriteStream() ”É invocado através do“ fs ”objeto do módulo. O caminho do arquivo de destino no qual o conteúdo precisa ser gravado é passado como parâmetro. Para escrever o conteúdo de outro stream o “ .cano() ”O método é utilizado. O ' escrever() ”O método também é útil quando se trata de escrever conteúdo diretamente no arquivo de destino. Esta postagem ilustrou o procedimento de trabalho com fluxos graváveis.